(section04-01 イベントとイベントリスナーから抜粋)
今度は同じイベントに同じリスナー関数を重ねて追加した場合を見てみましょう。次のサンプルではa_mcのフレーム再生イベントに対してstepRotationA()を4回重ねてリスナー関数として追加しています。この場合にはフレーム再生でstepRotationA()が4回実行されることになり、同じ機能のstepRotationB()を1回しか追加していない場合にb_mcに比べて4倍の速度で回転するでしょうか。
その結果はa_mcもb_mcと同じくstepRotationA()を1回しか追加していない場合と同じ速度で回転します。すなわち、同じイベントに同じリスナー関数を重ねて追加しても、リスナー関数は重複して登録されないわけです。
[:script:]同じイベントに同じリスナー関数を重ねて追加した場合
a_mcもb_mcと同じ速度で回転します。→swfを試す
今度は同じイベントに同じリスナー関数を重ねて追加した場合を見てみましょう。次のサンプルでは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; }
a_mcもb_mcと同じ速度で回転します。→swfを試す