イベントリスナーの追加 addEventListener()

|
(section04-01 イベントとイベントリスナーから抜粋)

 「インスタンスbox_mcをクリックしたらtest()を実行する」といったインタラクティブな処理を考えたとき、この中には「1.どこで、2.何が起きたら、3.どうする」の3つの要素が含まれています。

 1.どこで 
 2.何が起きたら
 3.どうする 

 これをイベント処理の用語で言い換えると次のようになります。

 1.イベントターゲット ・・・・ イベントが発生するオブジェクト
 2.イベントタイプ ・・・・ 発生するイベントの種類
 3.リスナー関数 ・・・・ イベント発生で実行する関数

 さきほどの「インスタンスbox_mcをクリックしたらtest()を実行する」をこれに当てはめると次のようになります。

 1.イベントターゲット ・・・・ box_mc
 2.イベントタイプ ・・・・ クリック
 3.リスナー関数 ・・・・ test()

 このイベント処理をスクリプトではaddEventListener()というメソッドを使って設定します。書式は次のようになります。イベントが発生するオブジェクトに対して、イベントタイプとリスナー関数をペアにしてイベントリスナーとして追加します。

書式:イベントリスナーを追加する
イベントターゲット.addEventListener(イベントタイプ, リスナー関数);
[:note:] addEventListener()には引数がまだありますが、ここでは省略しています。

 実際のスクリプトは次のようになります。クリックというイベントタイプはMouseEvent.CLICKで指定します。リスナー関数はtestのように()を付けずに指定します。
 実行するtest()も定義しておきます。リスナー関数にはイベントタイプと同じデータ型のイベントオブジェクトが引数として送られてくるので、コンパイルエラーにならないようにtest(eventObj:MouseEvent)のようにイベントオブジェクトを受け取る引数が必要です。

[:script:]box_mcをクリックしたらtest()を実行する
box_mc.addEventListener(MouseEvent.CLICK, test);

//クリックで実行されるリスナー関数
function test(eventObj:MouseEvent):void {
	trace("test OK");
}
 そこで、test()でbox_mcの現在の回転角度つまりbox_mc.rotationに45度を加算すれば、box_mcをクリックするたびにbox_mcが45度回転するようになります。

[:script:]box_mcをクリックすると45度回転する
box_mc.addEventListener(MouseEvent.CLICK, test);

//クリックで実行されるリスナー関数
function test(eventObj:MouseEvent):void {
	//box_mcを45度回転させる
	box_mc.rotation += 45;
}
fig04-01-02.jpgswfを試す
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

このブログ記事について

このページは、oshigeが2009年9月15日 09:26に書いたブログ記事です。

ひとつ前のブログ記事は「配列の値を逆順に並べ替える reverse()」です。

次のブログ記事は「繰り返し発生するイベント Event.ENTER_FRAME」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ