やっと「そうめん」触ったよ(8) -実践篇 2.-
2008/11/04 22:29 - AS3.0
前回は、同じ挙動のプログラムを addEventListerner で実装した場合と、「そうめん」で実装した場合で、それぞれどのようなコードになるのか比較してみました。
結果、「そうめん」は removeEventListener を一切書かなくて良い構造になっていることを確認したわけです。 ああっなんて楽チンなのぉ! と感動を新たにしたワタクシですが、今回は、事実上の addEventListener である event() メソッドも書かずに済ますことができたら、さらに楽だにゃーという話。
とは言うものの、addEventListener を書かずに済ますなんて土台ムリな話。 だいたいイベント駆動を発生させるのに、イベント駆動命令を書かずに済ませるなんてできるわきゃねーだろ。
ではどうするか。
カスタムスレッドクラスを作りまくるという方向性に突っ走るのが良いんじゃなかろうか。 ってもなんでんかんでんスレッドにすりゃイイちうもんでもなか。 スレッドはできる限り再利用可能なものとして設計していこうと思います。
カスタムスレッドクラスをコーディングするときはもちろん event() メソッドを書くことになるのですが、そのカスタムスレッドが汎用性のある部品として成立するならば、以降のプログラムでは MainThread からそのカスタムスレッドクラスを new すれば、event() メソッドを記述しなくても済むという寸法。 「そうめん」仕様のコーディングをすればするほど楽になるという策略。
前回の MainThread.as では、1カ所だけ event() メソッドを使っていました。 領域がクリックされるのを待つというアクションです。
その部分は step1() メソッドとして、以下の1行だけを記述していました。
event(container.stage, MouseEvent.CLICK, step2);
以前考察したように、スレッドクラスは、クラスというよりもメソッドと考えた方が、その本質を正確に捉えることができると私は考えます。 よってこんなたった1行程度のことでも、ひとつのスレッドとして独立させちゃうよ。
WaitClickThread.as と命名します。
でもわざわざカスタムスレッドにするのに、この1行だけを実装するんじゃバカにも程があるので、クリック待ちを示す表示が出るようにします。 クリック待ち表示を作るクラスを WaitLabel.as とします。
できたコードが↓
上記、WaitClickThread の ran() メソッドと WaitLabel.as はいろいろと手抜かりがあるんですが、今回はメソッドのスレッド化という部分を論点としたいので、そのまま話を進めます。
これらふたつのクラスを新たに作ることにより、MainThread の当該部分は以下のように書き換わります。
<前回> private function step1():void { trace('step1 : Mouse.CLICK'); event(container.stage, MouseEvent.CLICK, step2); }
<今回> private function step1():void { trace('step1 : Mouse.CLICK'); var wcth:WaitClickThread = new WaitClickThread(container); wcth.start(); wcth.join(); next(step2); }
続く。