ActionScript 3.0で始めるオブジェクト指向スクリプティング

第29回 ボタンのコントロール

この記事を読むのに必要な時間:およそ 2 分

今回から,マウスの操作の扱いについて解説する。まずは,基本となるボタンのコントロールだ。もっとも,本稿では基本的にボタンシンボルは使わない。もちろん,使っていけないことはない。しかし,スクリプトでつくり込もうとしたとき,何かと制約があるからだ※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 ボタンのMovieClipインスタンスをクリックするとその名前が[出力]される

図1 ボタンのMovieClipインスタンスをクリックするとその名前が[出力]される

スクリプトは正しく動いた。しかし,ボタンシンボルのインスタンスを使った場合と比べて,ひとつ違う点がある。インスタンスにマウスポインタを重ねたときに,指差しカーソルにならないことだ(図1参照)。Sprite.buttonModeプロパティをtrueに設定すると,インスタンスはボタンとして振舞うようになり,マウスポインタを重ねれば指差しカーソルに変わる図2)。

// MovieClip: ボタンとして使用
// フレームアクション
buttonMode = true;
addEventListener(MouseEvent.CLICK, xTrace);
function xTrace(eventObject:MouseEvent):void {
  trace(name);
}

図2 Sprite.buttonModeプロパティをtrueにすると重ねたマウスポインタが指差しカーソルに変わる

図2 Sprite.buttonModeプロパティをtrueにすると重ねたマウスポインタが指差しカーソルに変わる

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入