抱歉这个蹩脚的问题,但我不知道如何搜索它。所以,如果我有两个来自同一个类的事件,如:
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);
}
}}
我是否需要添加两个eventlisteners,如:
gameData.addEventListener(StylingEvent.BLUE_BG, onChangeBg);
gameData.addEventListener(StylingEvent.GREEN_BG, onChangeBg);
或者有可能像:
gameData.addEventListener( [any type of stylingEvent] , [some method]);
由于
答案 0 :(得分:5)
如上所示,是的,你需要两次添加事件监听器。
要仅添加一个事件侦听器,您可以修改事件类,以便只有一个事件名称:
public static const BACKGROUND_CHANGED = "backgroundChanged";
然后将属性添加到存储颜色的事件类:
public var backgroundColor:uint;
当分派事件时,请指定颜色:
var event:StylingEvent = new StylingEvent();
event.backgroundColor = 0x0000FF;
dispatchEvent(event);
答案 1 :(得分: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);
}