ソースファイル(含使用例):
概要:
== イベントエンジンとは ==
ソースfla内のステージに置かれているカラのMC "eventEngine"、これがTK Event Engineのエンジンになります。
movieclipの各種イベントハンドラー、つまり onClipEvent(enterFrame), onClipEvent(mouseDown) 等は、システムイベント又は何らかのユーザイベントに反応してそのハンドラーで指定された動作を 行うものですが、イベントエンジンはそのonClipEventを、各movieclipには何も書かずに、 ムービーを通して一つのmovieclip(eventEngine)に一手に引き受けさせるというものです。 つまり、全てのコードを_root若しくは#includeするasファイルに書く、といったことを可能にします。
利点として、
・コードとアートワークの完全分離が出来るので、コードをあちこち探す必要がなくなり、又アートワークの入れ替え等が簡単に行える
・又それによって、コードの再利用がしやすくなる。
・従来attachMovieしたムービークリップには、onClipEventが書けなかったが、 イベントエンジンを使えば、あたかもそれにonClipEventを書くが如く動作させることが出来る。
・仮想イベントに反応するグループを組むことができる。
等々が挙げられます。
== イベントリスナーとは ==
イベントエンジンには、このイベントが起きたらこのMCやあのオブジェクトにあれこれ動作をさせる、ということをいくつか 「登録」する事になりますが、その登録されたMCやオブジェクト経由メソッドまでのパスとそのメソッドに渡す引数のオブジェクトのペアをここではイベントリスナーと 呼ぶことにします。
シンタックス:
== イベントリスナーの登録 ==
eventEngine.subscribe(sEvent, sPathToMethod, oArgs);
== イベントリスナーの登録解除 ==
eventEngine.remove(sEvent, sPathToMethod);
== 引数について ==
sEvent の例 : "enterFrame"
sPathToMethod の例: "_root.myMC.myFunc"
これはそのMCやオブジェクトのメソッドへの絶対パスの文字列である必要があります。
そのためにはMovieClipのメソッド、targetPath()がしばしば役に立ちます。特にMC名に変数を使用している場合などに効果的です。
例: targetPath(this) + ".myFunc"
oArgs の例 : {num: 5, str: "hello"}
これはその登録メソッド(myFunc)に渡す、引数名/その値、のペアを並べたオブジェクトです。そのメソッドを定義する際、引数をオブジェクト一つのみにしておく必要があります。
使用例:
_root.myObj.myFuncを引数{num: 5, str: "hello"}とともにenterFrameに登録
eventEngine.subscribe("enterFrame", "_root.myObj.myFunc", {num: 5, str: "hello"});
_root.myObj.myFuncをenterFrameから登録解除
eventEngine.remove("enterFrame", "_root.myObj.myFunc");
enterFrameに登録されている全てのリスナーの登録を解除
delete eventEngine.enterFrame;
手動でmouseDownに登録されているリスナーを実行
eventEngine.mouseDown.execute();
_root.textFieldMC1.clearを仮想イベント"allClear"に引数無しで登録
eventEngine.subscribe("allClear", "_root.textfieldMC1.clear");
仮想イベント"allClear"を発生させる
eventEngine.allClear.execute();