2012-02-15 3 views
4

Я пытаюсь послать пользовательское событие из пользовательских ItemRendererItemRenderer Отправка пользовательского события

Это мое пользовательское событие

package events 
{ 
    import customClass.Product; 

    import flash.events.Event; 

    public class CopyProductEvent extends Event 
    { 
     public static const COPY_PRODUCT:String = "COPY_PRODUCT"; 
     public var picked:Prodotti; 

     public function CopyProductEvent(type:String, picked:Product) 
     { 
      super(type); 
      this.picked = picked; 
     } 
    } 
} 

В ItemRenderer У меня есть функция, которая делает это :

 private function sendEvent(o:Product):void 
     { 
      dispatchEvent(new CopyProductEvent(CopyProductEvent.COPY_PRODUCT,o)); 
     } 

И в главном приложении у меня есть зр ковчега Список и я попытался добавить EventListener как к приложению и сам список, но они никогда не назвать ...

this.addEventListener(CopyProductEvent.COPY_PRODUCT, 
     function(e:Product):void{ 
      ... 
    }); 

    list.addEventListener(CopyProductEvent.COPY_PRODUCT, 
     function(e:Product):void{ 
      ... 
    }); 

Почему?!? Где я поступаю неправильно?

событие из функции отправляется правильно ... Я не могу перехватить его ..

ответ

9

Похоже, ваше событие не пузырится.

Добавьте bubbles аргумент (который по умолчанию, является false) в конструкторе событий пользовательского:

public function CopyProductEvent(type:String, picked:Product, bubbles:Boolean = true) 
     { 
      super(type,bubbles); 
      this.picked = picked; 
     } 

Приятная объяснение события кипящим в AS3 можно найти здесь: Event Bubbling in AS3

+0

Спасибо, что работал ... тем временем я ждал вашего решения, я нашел еще один (менее утонченный), от itemrenderer, когда я отправил событие, которое я отправил от владельца, так: 'owner.dispatchEvent ...' и он тоже работал .., Кстати, ваше решение лучше ... – Marcx

+0

Да, это решение тоже будет работать , Однако недостатком этого является то, что ваш itemRenderer затем тесно связан с его владельцем, поэтому, если вы хотите повторно использовать средство визуализации, вам придется полагаться на ту же структуру компонентов, что и на месте. Разрешение пузырькового события позволяет легко использовать его повторно. – James

+0

да я получил это ... я не знал пузыря вещь :) – Marcx

Смежные вопросы