« スーツ購入 | メイン | パドル〜雷雨〜ハルク »

2005年7月 7日

メソッドシーケンスリスト

たとえば、Drawクラスを定義して、円や四角形や線を描くメソッドを定義したとします。次のように3つの図形を描くわけです。
(↓これは動かないからね。雰囲気だけです)

function test(){
var drwObj:Draw = new Draw(targetMC);
drwObj.circle(xy, r);
drwObj.box(rect);
drwObj.line(pt1, pt2);
}

これを実行すると、円と四角形と線が順番に描かれることには違いないのですが、あまりにも一瞬のできごとなので人間の目には同時に図形が描かれたように見えます。もし、図形を描くときにボヨ〜ンというアニメーションを入れていたとすると、メソッドを実行した順番とは関係なく、アニメーションが長いものが最後に描き終わります

ぼくが悩んでいたのはまさにこの部分です。円を描き終わったら、一呼吸置いて四角形を描いて、最後に二つの図形を線で結ぶというように、個々の処理が完結したら次へ進むというシーケンスをどうしたらスマートに行えるかを考えていました。スクリプトで描く個々のアニメーションをどうやったらシーケンスにできるのかと。

ヒントはコールバック処理にあることは最初からわかっていたんですが、これもうまくやらないと金魚のウンコのようなつながりつながりになって、後からシーケンスを並び替えるとか、同じシーケンスを繰り返したいときに無限ループになったりしてやたら面倒になります。

そこでメソッドをシーケンスリストに登録して、1つの処理が終わったら次のメソッドを取り出して実行、というようにできないか?というアイデアを試してみました。結論を言うと成功です。うまくいきました。シーケンスリストを複数個用意しておけば、いろんなシーケンスを状況に応じて再生できます。

さてそのスクリプトとは・・・あ!もう時間がない・・・へへへ

投稿者 oshige : 2005年7月 7日 14:58

コメント

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?