2010-02-11 20 views
10

Birkaç yıl içinde, hala mouseEnabled hakkında bir şey yok. Bir Sprite'ım var (örneğin burada "Sky", birçok nesne içeren, bunlardan biri de Mouse Events'i almak istemediğim bir Bulut. Bu Sky'ı diğer bazı görüntüleme nesnelerine yerleştiriyorum. görünür, fakat fare olaylarını engellemek için değil, bulutların arasından bir ağaç görürseniz ağaca tıklayarak gerekiras3 mouseEnabled hala benim için bir sorun

Gök sınıfında:.. Hatta bu yapılandırmayla

mouseEnabled = false; 
cloud.mouseEnabled = false; 
cloud.mouseChildren = false; 

, bulut ağacın üstündedir Ağacın üzerine tıklayamadığım için bulut tıkadı.Neden?

+3

Ödülü Triynko cevap doğrudur almak = mouseEnabled çocukları seçmek bir kap olabilir! –

cevap

3

Orada "pek çok nesne var" diyeceksiniz. lse bunu engelliyor. Ben sahneye bir dinleyici eklemenizi öneririz ve sonra tıklama elde hangi nesne görebilirsiniz:

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

Mesaj daha fazla kod ve muhtemelen daha yardımcı olabilir.

+0

tamam, "birçok nesne" bölümünü unutun. Devre dışı bırakmak istediğim tek bir nesne ve istediğim bir tane. Etkin nesne çok küçüktür ve bunu etkilemez. Gönderdiğiniz kodu kullandığımda aldığım: instance5 flash.display :: Sprite – phil

+0

tamam, bu yüzden orada bulut yerine tıklama alan örnek adı olmadan bir hareketli grafik var. ağacınızın bir örnek ismi var mı? Kliplerini ismini verdim, böylece hangisinin gerçekten engellendiğini anlayabilirsiniz. – typeoneerror

26

Sky fareEnabled/mouseChildren öğesi false olarak ayarlanmış olsa da, yine de bir nesnedir, hala alan kaplar ve bu nedenle hala mouseEnabled/mouseChildren ayarlanmamış tüm EBENT kapsayıcıları için bir vurma alanı görevi görür. yanlış. Bu nedenle, Sky nesnesinin Tree nesnesinizle aynı üst kapsayıcıda olmadığından şüpheleniyorum. Sky nesnesinin, muhtemelen, olayları yakalayan suçlu olan kendi ana kapsayıcı nesnesine sahip.

Ayrıntılı bilgi için: HERHANGİ BİR İZLEME içeren herhangi bir nesne bir vurma alanına sahip olacak ve içerdiği tüm özel şeyler (şekiller, alt nesneler, vb.), FareEnabled/mouseChildren öğesi false değerine ayarlanmış olsa bile, fare tıklamaları engelleyecektir.

Sky nesnesinin mouseEnabled öğesi false olarak ayarlanmış olsa da, Sky'ınız (ve çocukları) hala alan kaplar ve bu nedenle Sky olayları için fare kapsayıcılarını vurmak için bir vurma alanı verir. Bu nedenle, çözümünüz, Sky'in tüm ana kapsayıcılarının, en azından Tree ve Sky nesnelerine ait ortak ortak kapsayıcıya kadar (ancak dahil değil) false olarak ayarlanmış olan mouseEnabled özelliğinin bulunduğundan emin olmaktır. Üste | Ayrıca

, mouseEnabled = false ayarlanması ve mouseChildren = true bırakarak, yalnızca tıklama olayları :)

+0

Teşekkürler, metin alanları ile benzer bir sorun yaşıyordum ve bir düğmeye ortak bir atayı paylaşan bir kaptaydı. Konteynere doğrudan atıfta bulunmadan, ebeveyni arayabiliyordum ve mouseEnabled/Children öğesini false olarak ayarlayabiliyordum. – gltovar