2012-02-10 6 views
4

Im, используя RobotLegs и Signals для моего приложения. Это мой первый раз, когда я использовал Robotlegs, а Im с помощью команды управления сигналом команды Joel Hooks example hereAS3 Робот ноги и сигналы - Использование сигналов, Довольно подробные, любые альтернативы?

Я заметил, что это кажется довольно многословным, в отличие от событий. Для каждого Сигнала я должен создать новый класс, тогда как с событиями я бы группировал типы событий в один класс.

Мне нравится, как визуально и мгновенно описать это .. только просмотр пакета сигналов покажет все приложения связи. Хотя это кажется довольно многословным для меня.

Другие люди, использующие это, Я использую такие сигналы, как это правильно, или люди нашли способ обойти эту многословность?

Cheers

ответ

1

Это правильный путь. Главное преимущество сигналов - вы можете включить их в определения интерфейса, но, очевидно, вы получите большую груду сигналов.

В общем, я использую сигналы только для моего вида-> посредника и службы-> командной связи (1 к 1). Для системных уведомлений я использую события (n-to-n). Это делает количество сигналов более управляемым. Но это, безусловно, вопрос предпочтения.

Использование хорошей системы IDE и/или шаблонов облегчает большую «боль» необходимости создавать различные сигналы.

0

не должен сделать новый класс сигналов для командных карт, его просто хорошая практика. Вы можете просто присвоить классу «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 объектов.

0

Для каждого сигнала я должен создать новый класс, тогда как с событиями I будет группировать типы событий в один класс.

Вместо того, чтобы делать, что вы могли бы просто использовать сигнал как свойство ... что-то вроде:

public var myCustomSignal:Signal = new Signal(String,String); 

Вы можете думать сигнала как свойство вашего объекта/интерфейса.

В примере Джоэля он использует сигналы для обозначения событий уровня системы и сопоставляет их с робототехниками SignalMap, который отображает сигналы по типу. Поскольку они отображаются по типу, вам необходимо создать уникальный тип для каждого сигнала системного уровня.

 Смежные вопросы

  • Нет связанных вопросов^_^