ドキュメントクラスの設定とイベント処理
波紋を実現する
ENTER_FRAMEイベントのリスナーから呼び出されるwidenHandler()は、波紋に見せるためにインスタンスを徐々に拡大するメソッドです。addedInstanceHandler()のspeed.~の下りで、透明度(alpha)と拡大率(scale)をオブジェクトに格納してプロパティとし、その値をインスタンスのalphaとscaleX、scaleYに代入しています。+=とすることで、例えばalphaの場合であれば、widenHandler()が呼び出されるたびに0.1ずつが加算されていきます。
次の行から始まるif文は、インスタンスが生成されすぎて処理能力が低下するのを防ぐための処理です。
今回のサンプルでは、インスタンスのwidth(幅)がステージサイズの1.2倍になったところでremoveChild()メソッドを使用し、表示リストから抜くことによってインスタンスはステージから消えます。最後にENTER_FRAMEのイベント処理自体も高負荷であるため、removeEventListener()を使ってリスナー登録を解除します。
カスタムイベント
ActionScript 3.0からの新しい機能としてはずせないのが、カスタムイベントです。サンプルの2つのファイル以外に、あと2つ「ScaleEventDispatcher.as」「ScaleEvent.as」というASファイルがあると思います。これがカスタムイベントを実現するためのファイルで、CreateCircleクラスでコメントアウトしてある部分が、イベントディスパッチャーの呼び出しとリスナー登録、リスナー関数になります。内容は上記で解説した、インスタンスの生成を抑制するための処理とまったく同じです。
カスタムイベントでは、イベントを拡張して”サイズが一定以上のサイズになったら”イベントを発生させるというように、自由にイベントを定義することが可能になります。こうすることで、同様のイベントに関しては使い回しが効き、いわゆるオブジェクト指向ライクなスクリプティングが可能になり、大変便利です。これからActionScript 3.0を勉強される方は、ぜひ習得しておきたい概念といえます。
今回はユーザーイベントとシステムイベントを併用したアニメーションを実践しました。次回、最終回はアニメーションに重点を置いて解説していきます。