2010-02-11 14 views
10

अभी कुछ साल में, माउस के बारे में कुछ अभी भी सक्षम है जिसे मैं नहीं प्राप्त कर रहा हूं। मेरे पास एक स्प्राइट है (उदाहरण के लिए यहां "स्काई", जिसमें कई ऑब्जेक्ट्स हैं, उनमें से एक क्लाउड है, जिसे मैं माउस इवेंट्स प्राप्त नहीं करना चाहता हूं। मैं इस स्काई को किसी अन्य डिस्प्ले ऑब्जेक्ट्स पर ओवरले करता हूं। मुझे क्लाउड होना चाहिए दिखाई है, लेकिन माउस की घटनाओं को ब्लॉक नहीं करने के लिए आप बादलों के माध्यम से एक पेड़ दिखाई दे, तो आप पेड़ पर क्लिक करने के लिए सक्षम होना चाहिएas3 mouseEnabled अभी भी मेरे लिए एक समस्या है

स्काई कक्षा में:।।

mouseEnabled = false; 
cloud.mouseEnabled = false; 
cloud.mouseChildren = false; 
यहां तक ​​कि इस विन्यास के साथ

, जब बादल पेड़ पर है, मैं पेड़ पर क्लिक नहीं कर सकता क्योंकि क्लाउड इसे अवरुद्ध करता है। क्यों ???

+3

पुरस्कार Triynko उत्तर प्राप्त हो सकता है! –

उत्तर

3

आप कहते हैं कि वहां "कई ऑब्जेक्ट्स" हैं? संभावना से अधिक कुछ एलएसई इसे अवरुद्ध कर रहा है। मैं मंच पर एक श्रोता जोड़ने की सलाह देते हैं और फिर आप देख सकते हैं जो वस्तु क्लिक प्राप्त हो:

import flash.utils.getQualifiedClassName; 
stage.addEventListener(MouseEvent.CLICK, onClick); 
private function onClick(event:MouseEvent):void 
{ 
    trace(event.target.name, getQualifiedClassName(event.target)); 
} 

पोस्ट अधिक कोड और हम शायद और अधिक कर सकते हैं।

+0

ठीक है, "कई वस्तुओं" भाग को भूल जाओ। केवल एक ऑब्जेक्ट जिसे मैं अक्षम करना चाहता हूं, और जिसे मैं सक्षम करना चाहता हूं। सक्षम ऑब्जेक्ट बहुत छोटा है और इसे प्रभावित नहीं करता है। जब मैं आपके द्वारा पोस्ट किए गए कोड का उपयोग करता हूं तो मुझे यह मिलता है: instance5 flash.display :: स्प्राइट – phil

+0

ठीक है, इसलिए क्लाउड के बजाय क्लिक प्राप्त करने वाले इंस्टेंस नाम के बिना वहां एक स्प्राइट है। क्या आपके पेड़ का एक इंस्टेंस नाम है? मैं आपके क्लिप नाम दूंगा ताकि आप यह पता लगा सकें कि वास्तव में कौन सा अवरुद्ध है। – typeoneerror

26

हालांकि स्काई के पास माउस सक्षम है/माउस चाइल्डर झूठी पर सेट है ... यह अभी भी एक वस्तु है, यह अभी भी जगह लेता है, और इसलिए अभी भी किसी भी माता-पिता कंटेनर के लिए हिट एरिया के रूप में कार्य करता है जिसमें माउस नहीं है/माउस चाइल्डर सेट असत्य।

इसलिए, मुझे संदेह है कि आपकी स्काई ऑब्जेक्ट एक ही मूल कंटेनर में आपकी वृक्ष वस्तु के रूप में नहीं है। आपके स्काई ऑब्जेक्ट में शायद अपने माता-पिता कंटेनर ऑब्जेक्ट हैं, जो घटनाओं को रोकते अपराधी हैं।

विस्तारित करने के लिए: किसी भी वस्तु जिसमें कुछ भी शामिल है, में हिट क्षेत्र होगा और इसमें माउस क्लिक को अवरुद्ध कर दिया जाएगा, भले ही इसमें सभी व्यक्तिगत चीजें हैं (आकार, बाल वस्तुएं, आदि) में माउस सक्षम/माउस चाइल्डर गलत हो सकता है।

तो भले ही आपके स्काई ऑब्जेक्ट में माउस को गलत पर सेट किया गया हो, फिर भी आपका स्काई (और इसके बच्चे) अभी भी जगह लेते हैं, और इसलिए अब भी स्काई के मूल कंटेनर को हिट एरिया को माउस ईवेंट को अवरुद्ध करने के लिए दिया जाता है।

इसलिए, आपका समाधान यह सुनिश्चित करना है कि स्काई के सभी मूल कंटेनर में माउस के पास सक्षम हो, सक्षम संपत्ति कम से कम (लेकिन इसमें शामिल नहीं है) पेड़ और आकाश वस्तुओं के पहले आम पूर्वज कंटेनर तक।

इसके अलावा, mouseEnabled = false की स्थापना और mouseChildren = सच को छोड़ कर, आप एक कंटेनर जहां केवल mouseEnabled के साथ बच्चों का चयन = सच क्लिक ईवेंट :)

+0

धन्यवाद, मुझे टेक्स्टफील्ड के साथ एक ही समस्या थी, और यह एक कंटेनर में था जिसने एक बटन को एक आम पूर्वज साझा किया था। कंटेनर के लिए कोई प्रत्यक्ष संदर्भ नहीं होने के कारण मैं माता-पिता को कॉल करने और माउस सक्षम/बच्चों को झूठा सेट करने में सक्षम था। – gltovar

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^