1

足りない質問で申し訳ありませんが、検索方法がわかりません。したがって、同じクラスから次のような2つのイベントがある場合:

package  {
import flash.events.Event;

public class StylingEvent extends Event{
    public static const BLUE_BG:String = "blue_bg";
    public static const GREEN_BG:String = "green_bg";

    public function StylingEvent(type:String) {
        super(type);
    }
}}

次のような2つのイベントリスナーを追加する必要がありますか?

gameData.addEventListener(StylingEvent.BLUE_BG, onChangeBg);
gameData.addEventListener(StylingEvent.GREEN_BG, onChangeBg);

または、次のように可能ですか?

gameData.addEventListener( [any type of stylingEvent] , [some method]);

ありがとう

4

2 に答える 2

5

上に示したように、はい、イベントリスナーを2回追加する必要があります。

イベントリスナーを1つだけ追加するには、イベント名が1つだけになるようにイベントクラスを変更します。

public static const BACKGROUND_CHANGED = "backgroundChanged";

次に、色を格納するプロパティをイベントクラスに追加します。

public var backgroundColor:uint;

イベントをディスパッチするときは、色を指定します。

var event:StylingEvent = new StylingEvent();
event.backgroundColor = 0x0000FF;
dispatchEvent(event);
于 2012-08-27T17:41:38.207 に答える
0

両方のeventListenerを追加する必要があると思います。ここを参照してください:addEventListener(type:String, listener:Function)彼らはあなたが定義しているそれらの定数の文字列表現で働いています。それらの文字列が同じ場合はどうなるかわかりません。次のような関数を自分で作成して、コードを保存できます。

function addAllEvents(obj:Object, fun:Function) {
   obj.addEventListener(StylingEvent.BLUE_BG, fun);
   obj.addEventListener(StylingEvent.GREEN_BG, fun);
}
于 2012-08-27T17:41:49.950 に答える