今回から,マウスの操作の扱いについて解説する。まずは,基本となるボタンのコントロールだ。もっとも,本稿では基本的にボタンシンボルは使わない。もちろん,使っていけないことはない。しかし,スクリプトでつくり込もうとしたとき,何かと制約があるからだ(※1)。
- ※1
たとえば,ボタンシンボルのフレームには,スクリプトが書けない。また,シンボル内に配置したMovieClipインスタンスに名前をつけても認識されない。
なお,ボタンシンボルのインスタンスは,ActionScript 3.0では SimpleButtonクラスのインスタンスとして扱われる。
ボタンとして振舞わせる - Sprite.buttonModeプロパティ
タイムラインにボタンとして使うMovieClipインスタンスを置く。スクリプトは,ボタンのMovieClipシンボル内に,第1フレームアクションとして記述しよう。MovieClipインスタンス自身に,InteractiveObject.clickイベント(定数MouseEvent.CLICK)のリスナー関数を登録する。
// MovieClip: ボタンとして使用
// フレームアクション
addEventListener(MouseEvent.CLICK, xTrace);
function xTrace(eventObject:MouseEvent):void {
trace(name);
}
リスナー関数xTrace()はテスト用に呼出すtrace()関数の引数に,インスタンス名であるDisplayObject.nameプロパティの値を指定した。ボタンのMovieClipインスタンスにbutton_mcという名前が設定してあれば,[ムービープレビュー]でクリックしたときに[出力]パネルにはその名前が表示される(図1)。
スクリプトは正しく動いた。しかし,ボタンシンボルのインスタンスを使った場合と比べて,ひとつ違う点がある。インスタンスにマウスポインタを重ねたときに,指差しカーソルにならないことだ(図1参照)。Sprite.buttonModeプロパティをtrueに設定すると,インスタンスはボタンとして振舞うようになり,マウスポインタを重ねれば指差しカーソルに変わる(図2)。
// MovieClip: ボタンとして使用
// フレームアクション
buttonMode = true;
addEventListener(MouseEvent.CLICK, xTrace);
function xTrace(eventObject:MouseEvent):void {
trace(name);
}

