意外と知らないActionScriptのイベントにまつわる3つの小技
すっごく地味だけどたまに便利で、時にはつかいどころを考えないといけないようなミニTipsをいくつか紹介します。
その1:traceをハンドラとしてセット
dispatchEvent( MouseEvent.CLICK, trace );
追記:ネタ元がにとよんさんとこだったのを思い出した →addEventListener のハンドラに trace - てっく煮ブログ
デバッグ用の空イベントハンドラとかが無駄に増えるとき、直接traceをハンドラの代わりにイベントに登録します。
同じターゲットに同じイベントハンドラをいくつも登録できるので、既存のコードを汚すことはありません。1行でコメントアウトもしやすいです。
その2:イベントのパイプ
_btnClose.dispatchEvent( MouseEvent.CLICK, dispatchEvent );
これは使う時点であまりスマートではないのですが、GUIをつくりこんでいくと、イベントを伝播するだけのメソッドが多くなったりするので、
そういう時はボタンのイベントをそのまま受け流すようにコンテナ側のdispatchEventそのものを登録すると便利です。
その3:イベントハンドラをメソッドと共有する
_btnClose.dispatchEvent( MouseEvent.CLICK, closeWindow ); private function closeWindow( e:MouseEvent = null ){ // OK } closeWindow(); // OK
引数の初期値をnullにすると引数がある場合とない場合に対応できるため、
イベントハンドラとしてもメソッドしてもつかえるメソッドが用意できます。
ただし、設計的に本来いらない引数を定義しているのは気持ち悪いです。本当は多少冗長でも、イベントハンドラ経由でcloseWindowを呼ぶべきでしょう。
今回は軽めにこの辺で。