• ベストアンサー

Flash5でリンクボタンにtabIndexを指定したい

ブラウザでswfファイルを表示させたときに、 Tabキーでムービー内のリンクボタンを順番にフォーカス移動させたいのですが、順番がバラバラ・飛び飛びになってしまいます。 FlashMXからはtabIndexを簡単に指定できるそうなのですが、私はFlash5しか持っておらず、またActionScriptについても恥ずかしながらよく解っておりません。 こうすればうまく設定できる、と教えてくださる方がおられましたら、よろしくお願いいたします。 (Flash5J、WindowsXP)

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

テキストフィールドなら、Flash 5 でも ActionScript でフォーカスを制御できそうです(フォーカスを制御する Selection というオブジェクトがあります)が、残念ながら、ボタンのフォーカスを制御するスクリプトは見当たりませんでした。 Macromedia 社のHPで公開されている Flash のテクニカルノートに、Tab インデックス決定の法則に関する記述がありましたので、よろしかったらご参照ください。 この式から察するに、ボタンが縦並びの場合は上から順に、横並びの場合は左から順に Tab インデックスが決定されると思われます。 しかしこの式は、ボタンが縦並びの時はいいのですが、横並びになっている場合には少々問題があるようです。 例えば、大きさの違うボタンが    ○       △     □  ◎ このようにバラバラに並んでいても、上から順に○→△→□→◎の順にフォーカスが合います。ボタンの大きさが極端に違っていたり、X座標に大きな差がある場合でも、縦並び、もしくはそれに近い並び方であれば、たいていは上から順に Tab インデックスが決まります。 ところが、  ○ 。 ° ・ このように、ボタンの左上のY座標に大きなズレがあって横並びになっている場合は、○ → ° → ・ → 。 のように、X座標の大小よりもY座標の小さいもの(ステージの上の方にあるもの)が優先される場合があります。 テクニカルノートによれば、Tab インデックスの順番の決定にはボタンの左上の座標が使われるとのことですので、横並びの場合は特に、左上の座標に注意する必要がありそうです。 ボタンの大きさに違いがあり、ボタンの中央や下端を基準にして横一直線に並べている場合などは、見た目は一直線に見えますが、左上のY座標に注目すると大きなバラつきができていて、これが Tab インデックスの順番に影響を与えると思われます。 (縦並びでのX座標のズレはあまり問題にはならないのに、横並びのY座標のズレだと問題があるのは、計算式で、X座標に乗算される定数は 1/3 ですが、Y座標に乗算されるのは2と大きいことが関係しているのではないかと思います) 横並びの配置では、全てのボタンの上端を水平にして配置すると、左上のY座標は同じになります。この状態では単純にX座標の大小で順番が決まりますから、左から順にフォーカスが合うようになります。 Tab キーで飛び飛びに選択されるのがどうしても見苦しいようでしたら、最終手段で、Tab キーが押された場合に表示される黄色い四角形を表示しないようにする、つまり、Tab によるボタンの選択を禁止してしまう方法もあります。

参考URL:
http://www.macromedia.com/jp/support/flash/ts/documents/fl0261.html
aoneko
質問者

お礼

大変解りやすくご説明をいただき、疑問が一度に晴れた思いです。ありがとうございました。 本当にその法則のとおりにフォーカスが移動いたします。 まさに参考URLで示していただいたMicromediaページのメニュボタンのようなものを作ろうとしておりました。 黄色いォーカスを表示させないことはできましたが、私自身、ブラウザで操作する際主にキーボードを使用するので、Tabキーはぜひ活用させたいのですが、バージョン5ではボタンのTab順を指定することはできないのですね。 根本的にデザイン・レイアウトから考え直すことにいたします。 そうだ、MXを購入するという手もある!と思い、体験版をDLしてみました。 しかしこれはActionScriptをきちんと勉強しなければ非常にもったいない・・・。 ASを勉強するならまずはバージョン5を使いこなすことから始めなければ。

その他の回答 (1)

noname#10877
noname#10877
回答No.1

直接の回答ではないですが・・・。 とりあえず現状で、順番がバラバラ・飛び飛びながらもフォーカス移動ができているのですよね? であれば、その順番には何かしらの法則があるはずです。その法則がわかれば、求めたい順番に並べ直すことも可能なのでは?と思ったのですが。 全くの憶測ですが、私が思ったことは、それぞれのボタンが置かれているレイヤーの順番や、同じレイヤー上に置かれているボタンでも重なり順があるので、それらを希望のフォーカス順と同じように並べ変えるともしかすると・・・というものです。 ActionScriptでスマートに解決できればいいですが、 こういう考え方もあるかなと思いましたので。 参考まで。

aoneko
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 なるほど、法則があったのですね。 横並びのメニューボタンをクリックすると、その下に横並びのサブメニューが開くものにしていたのですが、このレイアウトでは無理のようです。残念。 抜本的にデザインを変える必要がありますね。 大変参考になりました。 アドバイスありがとうございます。

関連するQ&A