ショボ短歌会

はじめまして。

今FlashMX2004で画面を作成しています。
環境は以下です。
Flash Player7.0
ActionSctipt2.0

内容としましては、ログイン画面で、入力項目に以下のようなものがあります。
・ユーザID(テキストツール)
・パスワード(テキストツール)
・ログインボタン(シンボル変換にて作成したボタン)

これを上から順にTABで移動させたいのですが、うまくいきません。
いろいろと試行錯誤し、
.tabIndexを設定する方法も試みましたが、どうもうまく動きません。
また、最初のユーザIDにフォーカスを最初にセットさせたいと思い、SetFocusの記述を入れてもそれもだめでした。

最後のボタンまでTABが移動したら、また最初のユーザIDにも移動させたいのですが・・・

初歩的な問題で申し訳ないですが、困ってます。
どなたかよろしくお願いいたします。

A 回答 (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」のテキストフィールドにフォーカスを当てておくことは、まず無理だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!