Flashのキーイベント処理でなかなか不具合が取れず、困っています。
よろしくお願いします。
今作っているFlashは1つのデータ内に複数のページが存在し、ページごとにキーイベント処理内容が異なる仕様のため、それぞれにキー処理を行っています。
内容は、下のようなスクリプトを書いています。
-<ページ(1)でのクリアキー判定>----------------
var Key_object = new Object();
Key_object.onKeyDown = function(){
code = Key.getCode();
if(code == 46){
//終了処理
}
}
Key.addListener(Key_object);
-----------------------------------------------
-<ページ(2)でのクリアキー判定>----------------
var Key_object2 = new Object();
Key_object2.onKeyDown = function(){
code2 = Key.getCode();
if(code2 == 46){
//ページ(1)へ戻る処理
gotoAndPlay("page1");
}
}
Key.addListener(Key_object2);
-----------------------------------------------
ですが、上の処理だとページ(2)でクリアキーを押した時にページ(1)に戻ってほしいのに、何故かページ(1)のクリアキー判定まで行われてしまい、終了処理がなされてしまいます。
この件についての原因と打開策が知識の乏しい私では見当たりません。
また、違う人に聞いたところ「ページ(2)でのクリアキー判定の方はイベントリスナーを使わずにキー判定を実装して」といわれました。
このイベントリスナーを使わずにクリアキーの判定を実装する方法がわかりません。
どなたか、上のスクリプトでの不具合原因や打開策、また「イベントリスナーを使わないクリアキーの判定方法」が分かる方、いらっしゃいませんでしょうか?
No.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"を拾う方法を取っておりました。
本当にありがとうございました!
大変助かりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBScriptでMsgBoxのYesNoボック...
-
変数に256文字以上のテキストを...
-
Googleの検索窓をFlashオブジェ...
-
楕円の軌道に傾斜をつける方法...
-
photoshopで書いた四角の枠の中...
-
VB6.0で、フォームから、別のフ...
-
CreateDialogについて
-
SNMPの標準MIBについて
-
VBAユーザーホームテキストボッ...
-
全てのテキストボックスをセル...
-
VB6.0のHideのバグ?
-
VBAで改行の入ったデータの正規...
-
画面の範囲選択
-
ランダムに4桁の数字を表示する...
-
Access2000 実行時エラー '3061':
-
flashの背景色(stageの色)を...
-
PDFからepubに変換するウェブサ...
-
Flash みてください!初心者で...
-
C言語でのマウスを移動とマウス...
-
テキストボックスの中身をリセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBScriptでMsgBoxのYesNoボック...
-
UWSCのBTN関数について。
-
ダブルクリックと2回クリックの...
-
C# chart controlの透過について
-
バナーの枠を飛び出して動くア...
-
マウスクリックした回数がカウ...
-
キープレスとボタンクリックの...
-
Flashのキーイベント処理について
-
なぜ広告をクリックしないのか?
-
Motifのイベントの制御について...
-
VisualBasic2010,Undoについて
-
クリックイベントをプロシャー...
-
Excel VBA によるマウス操作
-
flash のステージの背景色
-
Flash作成について ボタンをク...
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
おすすめ情報