- ベストアンサー
Tab順の設定とフォーカスの取得
- FlashMX2004で画面を作成中の方への質問です。ログイン画面でのTAB順の設定とフォーカスの取得について困っています。
- TAB順を設定したいがうまくいかない。ユーザIDにフォーカスを最初にセットしたい。TABが最後のボタンまで移動したら最初のユーザIDに戻したい。
- 困っているのは初歩的な問題かもしれないが、助けて欲しい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、タブ順についてですが。 Flash Player 6 以降は、選択可能になりうるオブジェクト(ムービークリップ・ボタン・編集可能なテキストフィールドなど)には全て tabIndex というプロパティが設けられていて、Tab キーを押した時にフォーカスが移動する順番を任意に設定できるようになりました。 例えば、ステージに、テキストフィールドの” user_id ”と” pass_w ”、ボタンの” login ”という3つのインスタンスが並んでいるとします。 メインのタイムラインで user_id.tabIndex = 1; pass_w.tabIndex = 2; login.tabIndex = 3; このように設定すると、user_id → pass_w → login → user_id ・・・の順にフォーカスが移動するようになります。 タブ順は「アクセシビリティ」のパネルでも設定できます。 設定したい対象を選び、「プロパティ」パネルの右下の方にある、青い丸に人の形が描かれたアイコンをクリックしてみてください。「アクセシビリティ」パネルが開きます。 (「プロパティ」パネルが半分に折りたたまれていると、このアイコンは表示されません。パネルの右下にある△ボタンをクリックして、パネルを展開してください) 「オブジェクトのアクセスを可能にする」にチェックが入っている(デフォルトでは入っています)と、各項目が編集可能になります。 この中の「タブインデックス」が、タブ順の設定です。他のオブジェクトとダブらない番号を、整数で入力してください。 ここで入力した数値が tabIndex プロパティに設定されますので、スクリプトで tabIndex を設定する手間が省けます。 その他の項目は、さしあたって空白のままでも構いません。 ----------------- 特定のオブジェクトにフォーカスを与えるには、FocusManager.setFocus か Selection.setFocus を使います。 FocusManager でフォーカスを管理すると、フォーカスのあるテキストフィールドに緑色の縁取りが付いたり、デフォルトで Enter キーに反応するボタンを定義できるなどの細かい制御も可能です。 しかし、FocusManager はいろいろと面倒なので、単純に最初にフォーカスを与えるオブジェクトを設定したいだけでしたら、Selection.setFocus の方が簡単です。 フォーカスが1度に複数のオブジェクトに当たることはないので、フォーカスを持つオブジェクトは、ムービーの中でたった1つしかありません。 ですから、Selection は new などでオブジェクトを作ることなく利用できます。 先の例で、user_id にフォーカスを設定するスクリプトは、 Selection.setFocus( "user_id" ); となります。 「ムービープレビュー」でも、「制御」→「キーボードショートカットを無効」にチェックを入れると、フォーカスが移動しているのは確認できるのですが、テキストフィールドにカーソルが表示されないので分かりにくいです。 「ムービープレビュー」で作られた swf ファイルを起動し、スタンドアロンプレイヤーで再生させるか、「パブリッシュ」で HTML ファイルを作り、ブラウザで確認してみてください。 ブラウザで再生する場合は、Flash はページを構成する素材の1つにすぎず、キー操作は Flash ムービーだけが専用に制御できるものではありません。 Windows 版の FlashPlayer 7 では、Tab キーで Flash の外にある選択可能オブジェクト(アドレスバーや他のハイパーリンクなど)も選択できるようになっています。 例えば、ページに ・アンカーテキスト ・Flash ムービー ・画像を使用したリンクボタン と配置されている場合、Tab キーを押すと、 ・ブラウザのアドレスバー ・アンカーテキスト ・Flash ムービー内の選択可能オブジェクト (ムービー内では、ムービーで決められたタブ順に従います) ・画像を使用したリンクボタン の順にフォーカスが移動します。 この機能は、Mac などの他のOSや、Windows でも Flash Player 6 以前のプレイヤーにはありません。 Windows 版の Flash Player 7 でも、HTML の <object> タグに渡すパラメータに <param name="SeamlessTabbing" value="false"/> を追加すると、Tab キーでのフォーカスが Flash 内のオブジェクトから先に移動しなくなります。 従ってこの場合は、Flash 内の最後の選択可能オブジェクトの次は、Flash 内にある、タブ順が最も早いオブジェクトにフォーカスが戻るようになります。 ブラウザを立ち上げた直後は、ブラウザのウィンドウにもフォーカスがありません。これは Flash ではどうにもできない、OSやブラウザの都合によるものです。 HTML ページ内にある Flash では、ムービーの表示領域のどこかがクリックされるか、あるいは、Tab キーが何度か押されるまでは、そもそも Flash ムービー自体にフォーカスがありません。 ブラウザを立ち上げた直後に、何もしなくても「ユーザーID」のテキストフィールドにフォーカスを当てておくことは、まず無理だと思います。