(section04-01 イベントとイベントリスナーから抜粋)
さらに発展させて、止まっているbox_mcをクリックすると回転が始まり、回転しているbox_mcをクリックすると回転が止まるようにしてみましょう。
今度は止まっている状態から回転を開始する必要があるので、box_mcの回転を開始するstartRotation()を用意し、startRotation()をクリックイベントのリスナー関数として追加するところから始めます。
startRotation()では2つのことを行います。1つはbox_mcが回転するようにフレーム再生イベントにstepRotation()を追加します。もう1つはbox_mcをクリックしたら回転を止める機能です。このとき、クリックイベントには回転を開始するstartRotation()がリスナー関数として追加されている状態なので、startRotation()を取り除くのを忘れないようにします。
回転中にクリックしたときに実行されるstopRotation()では、startRotation()の場合とは逆に回転を止めることに加えて、次にクリックされたならば回転を開始するように設定し直します。このように、addEventListener()とremoveEventListener()を使ってイベントリスナーを追加したり取り除いたりすることで、イベントへの対応を切り替えるのがイベント処理の基本テクニックです。
[:script:]box_mcをクリックして回転と停止を切り替える
さらに発展させて、止まっているbox_mcをクリックすると回転が始まり、回転しているbox_mcをクリックすると回転が止まるようにしてみましょう。
今度は止まっている状態から回転を開始する必要があるので、box_mcの回転を開始するstartRotation()を用意し、startRotation()をクリックイベントのリスナー関数として追加するところから始めます。
startRotation()では2つのことを行います。1つはbox_mcが回転するようにフレーム再生イベントにstepRotation()を追加します。もう1つはbox_mcをクリックしたら回転を止める機能です。このとき、クリックイベントには回転を開始するstartRotation()がリスナー関数として追加されている状態なので、startRotation()を取り除くのを忘れないようにします。
回転中にクリックしたときに実行されるstopRotation()では、startRotation()の場合とは逆に回転を止めることに加えて、次にクリックされたならば回転を開始するように設定し直します。このように、addEventListener()とremoveEventListener()を使ってイベントリスナーを追加したり取り除いたりすることで、イベントへの対応を切り替えるのがイベント処理の基本テクニックです。
[:script:]box_mcをクリックして回転と停止を切り替える
//クリックで回転を開始するようにする box_mc.addEventListener(MouseEvent.CLICK, startRotation); //回転を始めるリスナー関数 function startRotation(eventObj:MouseEvent):void { //フレーム再生で回転するようにする box_mc.addEventListener(Event.ENTER_FRAME, stepRotation); //クリックで回転を停止するようにする box_mc.removeEventListener(MouseEvent.CLICK, startRotation); box_mc.addEventListener(MouseEvent.CLICK, stopRotation); } //回転を止めるリスナー関数 function stopRotation(eventObj:MouseEvent):void { //回転を止める box_mc.removeEventListener(Event.ENTER_FRAME, stepRotation); //クリックで回転を開始するようにする box_mc.addEventListener(MouseEvent.CLICK, startRotation); box_mc.removeEventListener(MouseEvent.CLICK, stopRotation); } //フレーム再生で実行されるリスナー関数 function stepRotation(eventObj:Event):void { //box_mcを回転させる box_mc.rotation+=2; }→swfを試す