2007年4月30日(月曜日)
【Flash】【今さらFlashLite 1.1】ボタンの選択順をコントロール
やってみたら意外と分かってなかったのでメモ。
ケータイで上下キーの入力を直接ゲットするには、Flash Lite 2.0じゃないとダメです。
on(keyPress"<Down>") {ほにゃらら}とか。
ボタンの上下を取得出来れば、簡単にボタンの選択順をコントロールすることが出来ます(Flashのヘルプ参照)。
ところが1.1では、上下キーの入力を取得出来るのは、上下左右のキーが使える端末じゃないとダメ、という訳の分からない制限があるようです。
ケータイブラウザで表示する場合、左右キーはご存知の通り「戻る」「進む」に対応していて、Flashからは使えません。
普通のケータイの場合、十時キーの上下は、PCでいうところのTABとShift+TABというキーコンビネーションに当たります。
なので、普通に上下にならんでいるボタンならともかく、絵の中にボタンが散っているようなデザインの場合、上下にキーを押したときにボタンがフォーカスされる順番は、PCのブラウザでTABキーを押したときのように、左上から右下に、Flashによって勝手に順番付けされます。
デザインにあわせて、思ったように順番付けすることが出来ないのです。
ならどうすればいいか。
- 本来ボタンにしたいところはムービークリップにする。その中に、選択された状態、選択解除された状態の絵を作る
- 隠しボタンを作って、そのボタンが選択されると、対応される1.のムービークリップにtellTargetして「選択された状態」フレームに移動させる
- その隠しボタンから選択が外れたら、対応するムービークリップにtellTargetして「選択解除された状態」フレームに移動させる
例えば、こんな感じでしょうか。
- 隠しボタン
on(rollOver) { targetLabel = "対応するMC"; tellTarget (targetLabel) { gotoAndPlay(ロールオーバーした状態のフレーム); } } on(rollOut) { targetLabel = "対応するMC"; tellTarget (targetLabel) { gotoAndPlay(ロールアウトした状態のフレーム); } }
擬似的に表現してやればいいようです。見ている方には、ボタンだろうがなんだろうが、選んで動けばそれでいいわけですから。
とはいえ、隠しボタンだからといってステージの外に置いたら、ボタンが機能しません。
かといって、ボタンをステージにおいて、上に何か載せて隠しても、ワクがでるのでバレバレになってしまいます。
そのため、ステージの最初に「_focusRect = false;」と書いて枠を表示させないようにしないといけません。

この記事へコメント/この記事だけを表示