您不必为命令地图创建新的信号类,这只是一个好习惯。你可以给“dataType”类一个类型属性——然后做一个switch
。但这对于命令来说会很混乱。但请注意,命令基本上是用于触发应用程序范围的操作。
并非所有信号都会触发应用程序范围的操作。
例如,如果您要响应来自单个View
. 我建议Signal
为相关的“查看事件”(例如MyButtonSignal
for MyButtonView
)创建一个类并给它一个类型属性。
我的典型信号如下所示:
package {
public class MyButtonSignal extends Signal {
public static const CLICK:String = 'myButtonClick';
public static const OVER:String = 'myButtonOver';
public function MyButtonSignal() {
super(String, Object);
}
}
}
像这样发送
myButtonSignal.dispatch(MyButtonSignal.CLICK, {name:'exit'});
正常收听:
myButtonSignal.add(doMyButtonSignal);
像这样处理信号:
protected function doMyButtonSignal(type:String, params:Object):void {
switch(type) {
case MyButtonSignal.CLICK: trace('click', params.name);
break;
case MyButtonSignal.OVER: trace('OVER', params.name);
break;
}
}
有时,为data
变量提供自己的数据类很有用。
因此,每当您意识到“糟糕,我需要对另一个事件做出反应”时,您只需转到Signal
并添加一个新的静态 const 来表示该事件。就像您(可能?)在使用Event
对象时所做的那样。