2009-02-09 22 views
12

Bir FLEX uygulamasında özel bir olayı "yeniden göndermeye" çalışıyorum. Yani component1, dispatchEvnet (event) öğesini yapar, component2 olay için bir işleyiciyi kaydeder, işleyicinin tek işlevi tekrar gönderilir (olay). Son olarak, component3, bileşen2'den gelen olayı dinler. Benim yapmaya çalıştığım şey, “yeniden fırlatma” istisnaları kavramına benzer (ve benzer nedenlerle). Fark, yeniden gönderimin AS3'te (Flash 10) çalıştığı görünmüyor. IE'de, hiçbir şey olmuyor ve FF3'te, tip 3'te işleyiciyi çağırırken Olay türünü CustomEvent'ime zorlamaya çalışırken, türün dökümünün başarısız olduğunu belirten bir istisna vardır. Hata ayıklayıcısındaki izleme kodu, component3 çağrılırken, olayın, aslında tüm özel şeylerim kaybolduğunda genel bir olduğunu gösterir. Bu durum böyle mi olmalı?FLEX uygulamasında yeniden gönderme olayı

cevap

19

Karşılaştığınız sorun, özel etkinliğinizde clone() etkinliğini geçersiz kılmamaktan kaynaklanır.

Olaylar yeniden gönderildiğinde, bunlar klonlanır ve değiştirilir. Klonu() geçersiz kılmazsanız, bir olay döndüren klonun() temel uygulamasını alırsınız. Etkinlik, özel etkinlik türünüze yayınlanamadığı için bir çalışma zamanı hatası verilir. belgelerine

: Bu özel sınıfın özelliklerini çoğaltmak için

kendi özel Etkinlik sınıfını oluşturarak, sırayla miras Event.clone() yöntemini geçersiz kılmalıdır. Etkinlik alt sınıfınıza eklediğiniz tüm özellikleri ayarlamazsanız, dinleyiciler redispatched olayı işlerken bu özellikler doğru değerlere sahip olmaz.