2012-02-10 12 views
4

私のアプリケーションにRobotLegsとSignalsを使用しています。 Robotlegsを初めて使用しています。私はJoel Hooks Signalコマンドマップを使用しています。example hereAS3ロボットの脚と信号 - 信号の使用、かなり詳細、どのような選択肢ですか?

私はイベントとは対照的に非常に冗長であるように感じました。すべてのシグナルについて、新しいクラスを作成する必要がありますが、イベントではイベントタイプを1つのクラスにグループ化します。

私は視覚的に即座にこれを説明するのが好きです。シグナルパッケージをブラウズするだけで、すべてのアプリ通信が明らかになります。それは私にはかなり冗長なようですが。

他の人がこれを使用していますか、このような信号を正しく使用しているのですか、この冗長性を回避する方法が見つかっていますか?

乾杯

答えて

1

でも正しい方法です。シグナルの主な利点は、それらをあなたのインターフェース定義に含めることができることです。しかし、明らかに、シグナルの大きな束に終わるでしょう。

一般に私は、私のビュー - >メディエーターとサービス - >コマンド通信(1対1)のためにのみ信号を使用します。システム全体の通知では、イベント(n-to-n)を使用します。これは、シグナルの数を少しだけ管理しやすくします。 しかし、それは明らかに優先事項です。

優れたIDEおよび/またはテンプレートシステムを使用すると、さまざまな信号を作成する必要があるという「苦痛」が軽減されます。

0

コマンドマップの新しい信号クラスを作成する必要はありません。ちょうど良い習慣です。あなたは "dataType"クラスに型のプロパティを与え、その上にswitchを行うことができます。しかし、それはコマンドのために乱雑になるでしょう。ただし、コマンドは基本的にアプリケーション全体のアクションをトリガするためのものです。

すべての信号がアプリケーション全体の動作をトリガするわけではありません。

たとえば、単一のViewからイベントのヒープに応答している場合。関連する「イベントの表示」のためにSignalクラスを作成して(例えば、MyButtonViewの場合はMyButtonSignal)、タイププロパティを指定することをお勧めします。鉱山の

典型的な信号は、次のようになります。そう

myButtonSignal.dispatch(MyButtonSignal.CLICK, {name:'exit'}); 

よう

package { 
    public class MyButtonSignal extends Signal { 
     public static const CLICK:String = 'myButtonClick'; 
     public static const OVER:String = 'myButtonOver'; 

     public function MyButtonSignal() { 
      super(String, Object); 
     } 
    } 
} 

発送は通常通りに聞く:

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; 
     } 
    } 
:そうのような

myButtonSignal.add(doMyButtonSignal); 

ハンドル信号を

場合によっては、dataに独自のデータクラスを変えることができます。

だから、いつもあなたは "Aw shit、私は別のイベントに反応する必要がある"と気づいたら、簡単にSignalに行き、イベントを表す新しい静的constを追加してください。おそらくあなたのようなものでしょうか?Eventのオブジェクトを使用したときはどうでしたか?

0

イベントごとに、私は イベントタイプを1つのクラスにグループ化するのに対し、すべての信号に対して新しいクラスを作成する必要があります。あなたがオブジェクト/インターフェースのプロパティとして信号と考えることができ

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

:代わりにあなただけのプロパティとして信号を使用することができることを...のような何かをすることの

ジョエルの例では、彼はシステムレベルのイベントを示すためにシグナルを使用しており、信号をタイプ別にマッピングするSignalMapというロボットレッグとマッピングしています。タイプによってマッピングされるため、システムレベルの信号ごとに固有のタイプを作成する必要があります。

関連する問題