dispatchEvent()可以在AS3中携带参数吗?

时间:2012-12-25 07:00:42

标签: actionscript-3 events parameters addeventlistener dispatchevent

看这个例子:

addEventListener("myEventType", myFunction("argument"));

function myFunction(args:String):Function {
    return function(evt:Event):void {
        trace(evt.currentTarget, "has", args);
    };
}

dispatchEvent(new Event("myEventType", true));

有效。

我可以做类似的事情,但是将"argument"传递给dispatchEvent()吗?

dispatchEvent()addEventListener()myFunction()完全分开的类别中,它会非常方便。

我将需要这么多,所以我想在不为每种情况创建自定义事件类的情况下这样做。

2 个答案:

答案 0 :(得分:3)

您可以使用本机flash.events.DataEvent传递String参数,或者在需要将参数传递给事件处理程序的所有情况下创建具有DataEvent属性的自定义data:*

如果要在添加事件侦听器的位置自定义事件侦听器的行为,可以创建“侦听器”对象来保存此自定义参数(但我认为此技术比自定义事件更复杂): addEventListener("myEventType", new EventListener("param1").onEvent);,其中EventListener就是这样的类:

public class EventListener
{
    private var params:*;

    public function EventListener(params:*)
    {
            this.params = params;
    }

    public function onEvent(event:Event):void
    {
            trace("onEvent, params = ", params);
    }
}

答案 1 :(得分:0)

您可以查看信号(https://github.com/robertpenner/as3-signals)。它们是事件的替代品,您可以通过信号发送任何您需要的额外参数。