2012-08-27 52 views
1

對不起,我不知道如何搜索它。所以,如果我有同一類像兩個事件:在actionscript中使用多個或只有一個eventlisteners 3

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); 
    } 
}} 

我是否需要添加兩個事件監聽器,如:

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

或者是有可能這樣的:

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

感謝

+0

別忘了你也應該重寫clone功能 - 見http://stackoverflow.com/questions/3585638/override-clone-in-自定義事件的as3需要幫助 – Neil

+0

這是酷人,謝謝,但是我現在沒有寫它,因爲我只使用類常量,並且在代碼中有許多$和其他奇怪的跡象,所以我現在不想了解它 –

回答

5

如上所示,是的,您需要添加兩次事件偵聽器。

只添加一個事件監聽器,你可以修改你的事件類,這樣只有一個事件名稱:

public static const BACKGROUND_CHANGED = "backgroundChanged"; 

然後將屬性添加到存儲的顏色你的事件類:

public var backgroundColor:uint; 

當它的時間指派該事件,指定顏色:

var event:StylingEvent = new StylingEvent(); 
event.backgroundColor = 0x0000FF; 
dispatchEvent(event); 
+0

好吧它運作良好,謝謝你的回答 –

0

我認爲你需要添加兩個eventListeners。請參閱:addEventListener(type:String, listener:Function)他們正在處理您定義的那些常量的字符串表示形式。如果這些字符串是相同的,我不知道會發生什麼。你可以自己寫這樣的功能,以節省一些代碼:

function addAllEvents(obj:Object, fun:Function) { 
    obj.addEventListener(StylingEvent.BLUE_BG, fun); 
    obj.addEventListener(StylingEvent.GREEN_BG, fun); 
} 
相關問題