同じリスナー関数を重ねて追加した場合

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

 今度は同じイベントに同じリスナー関数を重ねて追加した場合を見てみましょう。次のサンプルではa_mcのフレーム再生イベントに対してstepRotationA()を4回重ねてリスナー関数として追加しています。この場合にはフレーム再生でstepRotationA()が4回実行されることになり、同じ機能のstepRotationB()を1回しか追加していない場合にb_mcに比べて4倍の速度で回転するでしょうか。
 その結果はa_mcもb_mcと同じくstepRotationA()を1回しか追加していない場合と同じ速度で回転します。すなわち、同じイベントに同じリスナー関数を重ねて追加しても、リスナー関数は重複して登録されないわけです。

[:script:]同じイベントに同じリスナー関数を重ねて追加した場合
//同じイベントに同じリスナー関数を重ねて追加する
a_mc.addEventListener(Event.ENTER_FRAME, stepRotationA);
a_mc.addEventListener(Event.ENTER_FRAME, stepRotationA);
a_mc.addEventListener(Event.ENTER_FRAME, stepRotationA);
a_mc.addEventListener(Event.ENTER_FRAME, stepRotationA);
//b_mcには1度しか追加しない
b_mc.addEventListener(Event.ENTER_FRAME, stepRotationB);

//回転させる
function stepRotationA(eventObj:Event):void {
	a_mc.rotation+=2;
}

function stepRotationB(eventObj:Event):void {
	b_mc.rotation+=2;
}
fig04-01-05.jpg
a_mcもb_mcと同じ速度で回転します。→swfを試す
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

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

このブログ記事について

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

ひとつ前のブログ記事は「同じイベントに複数のリスナーを登録する」です。

次のブログ記事は「シンボルが継承するクラス」です。

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

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