• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクションスクリプト 初歩的質問)

アクションスクリプトの初歩的質問

このQ&Aのポイント
  • アクションスクリプトの勉強中に、enterFrameイベントとremovedFromStageイベントを使ってオブジェクトの移動と停止を行いたいが、停止しない問題が発生している。
  • タイムラインを使ってオブジェクトが消えるように設定すると、removedFromStageイベントが正常に動作する。
  • ステージ上から動いても外に出ただけではオブジェクトが消えたとはみなされず、removedFromStageイベントが発火しないと思われる。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>ステージ上から動いて外に出るというのはステージから消えたことにはならないからでしょうか? そうです. removedFromStageはFlashPlayer上で見えなくなったとき、ではなく 「表示リスト」から削除されようとするときに送出されるイベントです. ENTER_FRAMEイベントを停止させたいのであれば、 オブジェクトからリスナーを削除します. removeEventListener(Event.ENTER_FRAME, リスナー関数) オブジェクトがステージから完全に出たときに オブジェクト(の表示)もActionScriptで消すのであれば、 removeChildを使いますが、これで削除できるのは ASで配置したオブジェクトだけです. そこでオブジェクトの元のシンボルをリンケージでクラスとして 書き出して動的にオブジェクトを配置するようにします. 以下、メインタイムラインに書く場合の一例です. (リンケージでクラス名を"MC"で書き出しているとします) なお簡潔にするためシンボル内にはASは書いていません. var mc:MC = new MC(); addChild(mc); mc.x = stage.stageWidth;//どこでも良い mc.addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(e:Event){ mc.x -= 10; trace("左に10進む"); if(mc.x < 0 - mc.width){ mc.removeEventListener(Event.ENTER_FRAME, onEnterFrame); removeChild(mc); mc = null; } }

ikka3
質問者

お礼

すごく丁寧に回答して下さって とても分かりやすかったです^^ ありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A