2012年3月16日金曜日

セミナー「ActionScript 3.0 パフォーマンスチューニング 」のサンプル007_capture_phaseについて

2012.2.15のセミナーで使用されたサンプルをダウンロードさせていただいた。
掲載いただけるとはありがたいことである。

その中のひとつ007_capture_phaseについての覚書。

このサンプルはcaptureについて説明するためのものであるが、
子にイベントを設定せず、親だけでコントロールしている、ということも特徴だ。

これまでの私の製作方法は
1.ボタン専用のクラスを作り、
2.その中でエフェクトなどのメソッド作成し
3.そのクラスにマウスイベントを付与していた
4.さらに個別にマウスイベントの起動・解除メソッドを設定親またはメインのスクリプトでマウスイベントの起動・解除を設定していた

一方今回の方法を使うと
・ボタンは単純なグラフィックで構成される要素だけにし、
・エフェクトはメソッドで作成、そこに操作対象(ここではボタンmc)を渡す
という手法が使える(クラスメソッドにしてもよいと思うが、クラスメソッドとかクラス変数はインスタンスと違ってnewでクリアされず残ってしまうので、わざわざ初期化メソッドを作らなければならないので面倒かも)

また、驚いたことにaddEventListenerの第3引数:captureをtrueにすると
そのaddEventListenerを設定したオブジェクト自身はターゲットにならず
イベント配信を行わない。
試しにサンプルのflaファイルにGroup(mc)のボタン群の背景に壁紙を敷いてみたが、
クリックしても反応はない。
ちなみに、サンプルファイルのxChange内に以下のスクリプトを記載したところ
trace(eventObject.target.name  , eventObject.currentTarget.name);
のスクリプトを記載したところ
//target : my0_mc ~my3_mc  currentTarget : instance1(親) 
の結果となった
target :まさにクリックされた対象
currentTarget : イベントを設定した対象
と覚えておく

0 件のコメント:

コメントを投稿