- ベストアンサー
FlashのAsctionScript3.0でキーボード操作でフレーム移動する方法
- FlashのAsctionScript3.0を使用して、キーボードを押すと指定したフレームに移動する方法について説明します。
- キーボード操作によるフレーム移動を実装する際に発生するエラーについて解決策を提供します。
- フレームラベルが正しく設定されているにもかかわらず、ArgumentError: Error #2109が発生する場合の対処方法を説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_P1); これがずっと効き続けているから,そういうエラーが出るのでしょう。 ご質問の件に限ったことではなく 動作させ続ける必要がないイベントリスナーは なるべくその都度 removeEventListener で 登録を抹消する方が良いでしょう↓。 stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_P1); function fl_KeyboardDownHandler_P1(event:KeyboardEvent):void { this.gotoAndPlay("P1ending"); stage.removeEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_P1); } 再び必要になれば、 そのときにまた addEventListener をしなおせば良いです。 例えば上の例では、 上のスクリプトを書いたフレーム(シーン P1 の フレーム1?)に戻ってきたときには 自動的に再び addEventListener されるわけですから 普通はこのままで問題ないと思います。 または、 「シーン P1」内のみで this.gotoAndPlay("P1ending"); を実行させるようにするのも1つの方法です↓。 stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_P1); function fl_KeyboardDownHandler_P1(event:KeyboardEvent):void { if (this.currentScene.name == "P1") { this.gotoAndPlay("P1ending"); } }
お礼
まさに私が求めていた回答そのものでした。 動作はできてもエラー表示がでるとやはりスッキリしませんでしたので。。 解説も分かりやすかったです。ありがとうございました!