Mar*_*rcx 4 apache-flex actionscript event-handling dispatchevent
我正在尝试从自定义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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在itemRenderer中,我有一个函数来执行此操作:
private function sendEvent(o:Product):void
{
dispatchEvent(new CopyProductEvent(CopyProductEvent.COPY_PRODUCT,o));
}
Run Code Online (Sandbox Code Playgroud)
在主应用程序中我有一个spark List,我试图将EventListener添加到应用程序和列表本身,但它们永远不会被调用...
this.addEventListener(CopyProductEvent.COPY_PRODUCT,
function(e:Product):void{
...
});
list.addEventListener(CopyProductEvent.COPY_PRODUCT,
function(e:Product):void{
...
});
Run Code Online (Sandbox Code Playgroud)
为什么?!?我哪里做错了?
函数中的事件正确发送...我无法拦截它..
听起来你的事件并没有冒泡.
在自定义事件构造函数中添加bubbles参数(默认情况下为false):
public function CopyProductEvent(type:String, picked:Product, bubbles:Boolean = true)
{
super(type,bubbles);
this.picked = picked;
}
Run Code Online (Sandbox Code Playgroud)
关于AS3中事件冒泡的一个很好的解释可以在这里找到: AS3中的事件冒泡