не должен сделать новый класс сигналов для командных карт, его просто хорошая практика. Вы можете просто присвоить классу «dataType» свойство type - и сделать switch
. Но это было бы грязно для команд. Но обратите внимание: команды в основном предназначены для запуска действий приложения.
Не все сигналы запускают широкомасштабные действия приложения.
Например, если вы отвечаете на кучу событий из одного View
. Я предлагаю сделать класс Signal
для соответствующих «событий просмотра» (например, MyButtonSignal
для 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);
Handle сигнал следующим образом:
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
свой собственный класс данных.
Итак, каждый раз, когда вы понимаете, «Aw shit, мне нужно реагировать на другое событие», вы просто переходите к Signal
и добавляете новый статический const для представления события. Многое, как вы (возможно?), При использовании Event
объектов.