27.別クラス内でのイベント発生を受け取りたい
別クラス内で発生したイベントを受け取りたい
別クラス内での処理によって、発生したイベントをメイン側で受け取りたい、という場合が生じました。
ちなみにここで言う別クラスとは自分で作成したクラスで、コンパイル時にそのasファイルが組み込まれるものです(実行時にswfを読み込む場合ではありません)。
通常、自分でイベントを発生させる場合、
addEventListener("complete",completeHandler);
という感じでイベントリスナーの設定をしておき、イベントを発生させたいところで、
dispatchEvent(new Event("complete"));
などと記述すればOKですよね。
では、このイベントするのが別クラスならどうしたらいいの?という問題です。
別クラス内のイベントの受け取り方
もっとうまい書き方があれば教えて頂きたいのですが、とりあえずこんな感じで処理しました。かなり苦しいですが、、、(^^;
メイン側で、ダミーでイベントを処理するためのSpriteを作成。
var dummy:Sprite=new Sprite();
dummy.addEventListener("complete",completeHandler);
dummy.addEventListener("complete",completeHandler);
で、該当クラス(下のではMyClass)からオブジェクト作成時にそのdummy:Spriteを渡してあげます。
var myclass:MyClass = new MyClass(dummy);
別クラス内のコンストラクタでは、
public function MyClass(subdummy:Sprite){
という感じで受け、イベントを発生させたい所で、
subdummy.dispatchEvent(new Event("complete"));
とすれば、とりあえず、メイン側で受け取ることができます、、、
動くには動きますが、、、他にスマートな方法があれば教えて下さい!