27.別クラス内でのイベント発生を受け取りたい

別クラス内で発生したイベントを受け取りたい

別クラス内での処理によって、発生したイベントをメイン側で受け取りたい、という場合が生じました。

ちなみにここで言う別クラスとは自分で作成したクラスで、コンパイル時にそのasファイルが組み込まれるものです(実行時にswfを読み込む場合ではありません)。

通常、自分でイベントを発生させる場合、

addEventListener("complete",completeHandler);

という感じでイベントリスナーの設定をしておき、イベントを発生させたいところで、

dispatchEvent(new Event("complete"));

などと記述すればOKですよね。

では、このイベントするのが別クラスならどうしたらいいの?という問題です。

別クラス内のイベントの受け取り方

もっとうまい書き方があれば教えて頂きたいのですが、とりあえずこんな感じで処理しました。かなり苦しいですが、、、(^^;

メイン側で、ダミーでイベントを処理するためのSpriteを作成。

var dummy:Sprite=new Sprite();
dummy.addEventListener("complete",completeHandler);

で、該当クラス(下のではMyClass)からオブジェクト作成時にそのdummy:Spriteを渡してあげます。

var myclass:MyClass = new MyClass(dummy);

別クラス内のコンストラクタでは、

public function MyClass(subdummy:Sprite){

という感じで受け、イベントを発生させたい所で、

subdummy.dispatchEvent(new Event("complete"));

とすれば、とりあえず、メイン側で受け取ることができます、、、

動くには動きますが、、、他にスマートな方法があれば教えて下さい!

→28.連想配列

26.イベント発生時の処理に引数を渡す←