मैं एक पुन: प्रयोज्य ढंग से एक ही प्राप्त करने के लिए कोशिश कर रहा था .. मैं लगभग बाहर एक तरह से getObjectsUnderPoint() का उपयोग कर पाया - इस वस्तु के तहत रिटर्न एक कण बिंदु, जेड-ऑर्डर (भले ही वे भाई बहन नहीं हैं, उदाहरण के लिए व्यूस्टैक, पॉपअप, ईसीसी।)।
असल में, मुझे मंच के किसी विशेष बिंदु के नीचे शीर्षतम प्रदर्शन वस्तु मिलती है, फिर परीक्षण ऑब्जेक्ट को खोजने के लिए प्रदर्शन ऑब्जेक्ट पदानुक्रम को ऊपर उठाएं। यदि मुझे लगता है, तो वस्तु दिखाई दे रही है (पदानुक्रम में दिखाई देने वाली वस्तुओं को getObjectsUnderPoint कॉल द्वारा पहले ही फ़िल्टर नहीं किया जाना चाहिए)।
समस्या यह है कि आपको अपने ऑब्जेक्ट के एक गैर-पारदर्शी बिंदु का उपयोग करना होगा (मेरे मामले में, मैंने राउंडर सीमाओं के कारण 5 पिक्सेल की ऑफसेट का उपयोग किया था), अन्यथा इसे इस फ़ंक्शन द्वारा नहीं उठाया जाएगा।
इसे सुधारने के लिए कोई विचार?
Cosma
public static function isVisible(object:DisplayObject):Boolean {
var point:Point = object.localToGlobal(new Point(5, 5));
var objects:Array = object.stage.getObjectsUnderPoint(point);
if (objects.length > 0) {
if (isDescendantOf(object, objects[objects.length - 1] as DisplayObject)) {
return true;
}
}
return false;
}
public static function isDescendantOf(parent:DisplayObject, child:DisplayObject):Boolean {
while (child.parent != null) {
if (child.parent === parent) {
return true;
} else {
child = child.parent;
}
}
return false;
}
स्रोत
2010-12-15 12:14:03
वहाँ और आवेदन पर बंद करने के लिए किसी भी कारण है न केवल जब जनक == बातिल? –
मुझे याद है कि एप्लिकेशन की "पैरेंट" संपत्ति एक ही उदाहरण पर एक सूचक हो सकती है जो अनंत लूप का कारण बनती है। मैं 100% निश्चित नहीं हूं और आसानी से पुष्टि नहीं कर सकता क्योंकि मैं अब कुछ वर्षों से कोई फ्लेक्स काम नहीं कर रहा हूं। –