-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()ますか?

dispatchEvent()とから完全に分離されたクラスにある状況ではaddEventListener()非常に便利myFunction()です。

これはたくさん必要になるので、状況ごとにカスタムイベントクラスを作成せずにやりたいと思います。

4

2 に答える 2

3

flash.events.DataEventパラメータを渡すためにnativeを使用するか、イベントハンドラにパラメータを渡す必要があるすべての状況でプロパティを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)をご覧ください。これらはイベントの代替であり、Signalを使用して必要な追加のパラメーターを送信できます。

于 2012-12-25T09:33:13.960 に答える