イベントドリブンドリブンドリブン


いくつかの非同期のイベントを、シーケンシャルに正しい順番で行うにはどうすればいいのだろう。例えば、「犬が歩いて棒に当たって、棒の上にいた猿が落ちて、落ちた瞬間に吃驚した河童が川を流れていく」という、TV 番組の「ピタゴラスイッチ」みたいなイベントの連鎖です。

ハードコードするとこんな感じになる。過去形の関数がイベント。

dog.棒に当たる() {
  monkey.落ちた() {
    kappa.流れた() {
      終わり();
    }
    kappa.流れる();
  }
  monkey.落ちる();
}
dog.歩く();

ネストしてしまう。各イベントにリスナを作って、イベントと、付随する次の動作を管理する人がいればいいのかなー。犬と猿と河童はお互いを知らない方が好ましい。となると、コマンドキューイングが当てはまるのか。コマンドをキューに入れて逐次実行していけばよいらしい。

ってことは、犬や猿や河童の振る舞いを全て同じインターフェースに変換しないといけないのかー?do() と done() とかに。むむむ…。

カテゴリー: Flash   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>