2008/10/16

Cairngormのコマンドをシーケンシャルに実行していく

Cairngorm - Chain Events
http://undefined-type.com/index.php/2008/08/07/cairngorm-chain-events

こんな感じにChainEventにイベントを配列の形で入れてやると、イベントに対応するコマンドが順次実行されていくみたいです。

var beginChain : ChainEvent = EventChainFactory.chainEvents([
new UpdateViewEvent(ModelData.VIEW_LOADING),
new CheckSoftwareVersionEvent(),
new GetLocalSettingsEvent(),
new GlobalApplicationEvent(),
new GetFeedListEvent(),
new UpdatePostStatusEvent(),
new UpdateViewEvent(ModelData.VIEW_POSTS)
]);
beginChain.dispatch();

ソースを見るとコマンドはSequenceCommandを継承して、executeやresultメソッドの中でexecuteNextCommandメソッドを実行するようです。
これは普通のことだけれど、下記のように次のイベントをセットする形にすることによって、コマンドの実行順序をコマンドの実装から分離できてるわけですね。

override public function execute(event:CairngormEvent):void
{
nextEvent = ChainEvent(event).nextChainedEvent;
// Do Command Action
this.executeNextCommand();
}

へぇー。

0 件のコメント: