- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flashのキーイベント処理について)
Flashのキーイベント処理での不具合と打開策
このQ&Aのポイント
- Flashのキーイベント処理で不具合が発生しています。ページ(2)でのクリアキー判定の際に、ページ(1)のクリアキー判定も実行されてしまい終了処理が行われてしまいます。
- 不具合の原因はイベントリスナーの使い方にあります。イベントリスナーを使わずにクリアキーの判定を実装する方法が必要です。
- 解決策としては、ページ(1)とページ(2)で別々のキーコードを設定し、キーイベントの処理内容を分けることです。イベントリスナーを使わずにキーイベントを監視する方法でクリアキーの判定を行うことができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご質問は2つですか? ------------------------------------- > 故かページ(1)のクリアキー判定まで行われてしまい、 delete でイベントリスナーのメソッドは削除できると思います(多分)。 フレーム2 に行ったときとか,その前で。 delete Key_object.onKeyDown; 「イベントハンドラメソッドはdeleteで消せ!」 http://f-site.org/articles/2004/05/22140833.html ------------------------------------ > 「ページ(2)でのクリアキー判定の方はイベントリスナーを使わずにキー判定を実装して」 これは古来からある方法(Flash1くらいからある方法)で, 何でも良いのでボタン(ボタンシンボルのインスタンス)を作成して, そのボタン自体に, on (keyPress "<Delete>") { // 何かの処理 } のように書けばできます。 ボタンが見えて困る場合は透明な塗りをボタンにするとか, ボタンのアルファを 0 にするとか, ステージ外の見えない場所にボタンを置くとか, 背景画像の下のレイヤーにボタンを隠すとかとかとか… そんな方法で誤魔化します。 昔(というかつい最近まで,というか携帯などは今でも),キーの判定は, キークラスは使用せずに, ボタンの on (keyPress) ハンドラで取っていました(います)。
お礼
「Flashのキーイベント処理について」の丁寧な回答、本当にありがとうございました。 しかも厚かましくも二つの質問に答えていただいてしまって恐縮しきりです。 一つ目のイベントハンドラを消す方法では何故か不具合が解消されませんでした。。。すみません。 何か別の原因があるのでしょうか・・・? ですが、on (keyPress "<Delete>")を実行すると難なくクリアできました! このon (keyPress "ボタン処理")の方法は知っていたのですが、クリアキーの記述方法が"<Delete>"だと知らなかったために(てっきり<clear>かと思って記述したこともありましたが、もちろん実行されず・・・)今回のようにキーコード値の"46"を拾う方法を取っておりました。 本当にありがとうございました! 大変助かりました!