-1

看这个例子:

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()吗?

在与anddispatchEvent()完全分开的类的情况下,这将非常方便。addEventListener()myFunction()

我会非常需要这个,所以我想在不为每种情况创建自定义事件类的情况下做到这一点。

4

2 回答 2

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);
    }
}
于 2012-12-25T08:20:25.450 回答
0

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

于 2012-12-25T09:33:13.960 回答