• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:キーを離した際、、、)

キーボード操作でボタンのフォーカスを移動させる方法【初心者向け】

このQ&Aのポイント
  • 超初心者の方に向けて、ムービークリップタイプのボタンでのキーボード操作について解説します。
  • TABキーと連動させることで、ボタンのフォーカスを移動させ、Enterキーでイベントを発生させることが可能です。
  • アクションスクリプトのバージョンは2.0を使用します。ご興味のある方は、ぜひお試しください!

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

以下 #2 の方と内容が重複するかもしれませんが一応。 > 例として、最初TABキー これ以降の「例」の説明がよくわかりませんが, その「例」より上のご質問内容を見て, 一応 "形だけ" そのようなものは考えて作ってみました。 ムービークリップ(MC)製の A・B・C・D 4つのボタンにはそれぞれ 「A_mc」「B_mc」「C_mc」「D_mc」というインスタンス名を付けるとします。 それら 4つの MC が配置してあるタイムラインのフレームに書くスクリプト例です。 ---------------------------------- // 配列mcArr にボタンMC名を登録しておく var mcArr:Array = new Array("A_mc", "B_mc", "C_mc", "D_mc"); for (var i:Number = 0; i<mcArr.length; i++) { // 各ボタンMCの自動Tab選択を無効にする this[mcArr[i]].tabEnabled = false; // 各ボタンMCに何某かのアクションを設定(仮) this[mcArr[i]].onRelease = function():Void { trace(this._name); }; } // カウント用変数 cnt に初期値を設定 var cnt:Number = 0; // キー監視用オブジェクト keyObj を作成 var keyObj:Object = new Object(); // キーアップ時の動作を定義 keyObj.onKeyUp = function():Void { // アップしたキーが Tab であれば if (Key.getCode() == 9) { // mcArr の cnt 要素のボタンにフォーカスを当てる Selection.setFocus(mcArr[cnt]); // cntが配列要素数-1未満だと cntに1を加算しそれ以外は0に戻す cnt = (cnt<mcArr.length-1) ? cnt+1 : 0; } }; // keyObj を Keyクラスのリスナーに登録 Key.addListener(keyObj); ---------------------------------- ※ Flash MX 2004 以上 ActionScript 2.0 これですが..., 「制御」→「ムービープレビュー」で出てくるプレビューパネルで, 「制御」→「キーボードショートカットを無効」にして動作確認するか, もしくは, パブリッシュしたSWFをダブルクリックして スタンドアローンの Flash Player で見たときは 思惑通りに動くんです。 しかし! SWFをHTMLに貼り付けてブラウザで見ると HTML やブラウザなどにフォーカスが移り回るんです。 「Tab」キーには意味(既存割り当ての動作)があるので Flash だけの問題で済まなくなると思います。 上に書いた「一応 "形だけ" そのようなものは考えて作ってみた。」という意味はそういうことです。 ブラウザなどに表示させる場合は「Tab」キーでない別のキーでフォーカス移動させる方が良いと思います。

totorojp
質問者

お礼

BlurFiltan様、 ご丁寧に書いていただいてありがとうございます。 ブラウザから見ると確かに、HTML やブラウザなどにフォーカスが移り回るますね、、他のキーでやるしかないですね、、

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

その他の回答 (2)

noname#108428
noname#108428
回答No.2

連投になりますが、多くのWebブラウザが、 tabキーでフォーム部品等をフォーカスし、 enterキーでクリックと同様の効果 を実装しています。 貴殿の書いた仕様ですと、 押す=Aをフォーカス(Webブラウザの機能) 離す=Bをフォーカス(このボタンの機能) 押す=Cをフォーカス(Webブラウザの機能) 離す=フォーカスを一度Bに戻してからCへ移動(このボタンの機能) という奇怪な挙動となります。 基本設計を見直された方が良いでしょう。 また、一部のWebブラウザは、この挙動をカスタマイズ可能です。 これとの競合は、念頭に置かれてますか?

totorojp
質問者

補足

U-ta_m様 なるほど、これらは、まったく知りませんでした。 勉強になりました。 TABキーが離された瞬間ではなく、押された瞬間に、次にボタンへフォーカスが移動する仕様に変更します。 よろしくお願いします。

すると、全ての回答が全文表示されます。
noname#108428
noname#108428
回答No.1

tabキーを押すとAがフォーカスされ、それを離すとBにフォーカスが 移る仕様だと、Aを選択する為にはDまでいって一回りする必要が生じますね。 そんな不便な仕様で本当に良いのですか?

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

関連するQ&A