我正在尝试从自定义ItemRenderer
调度自定义事件这是我的自定义事件
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));
}
在主应用程序中,我有一个 spark List ,我尝试将EventListener添加到应用程序和列表本身,但它们永远不会被调用...
this.addEventListener(CopyProductEvent.COPY_PRODUCT,
function(e:Product):void{
...
});
list.addEventListener(CopyProductEvent.COPY_PRODUCT,
function(e:Product):void{
...
});
为什么?!?我在哪里做错了?
来自函数的事件被正确发送......我无法拦截它..
答案 0 :(得分:9)
听起来你的事件没有冒泡。
在自定义事件构造函数中添加bubbles
参数(默认情况下为false
):
public function CopyProductEvent(type:String, picked:Product, bubbles:Boolean = true)
{
super(type,bubbles);
this.picked = picked;
}
可以在此处找到关于AS3中事件冒泡的一个很好的解释: Event Bubbling in AS3