FlashLite 上下ボタンでフォーカスを最上部→最下部(最下部→最上部)へループさせないようにする(改)
2010 年 4 月 17 日 土曜日相変わらず、縦長のFlashLiteをやっております。前の記事でフォーカスのループに悩まされていましたが、なんとか解決しました。という事を書いたのですが。話はまわ終わっていませんでした。
前回と同様、終わってみれば本当に本当に簡単なことでした。難しく考えすぎず、まずは初心に帰りなさい、ということですな。
今回はコードを書くまでもなさそうですね。やったことは、
「上端(下端)にしたいボタンのすぐ先(上端ならそれより少し上、下端ならその逆)にもう1個ボタンを作り、そのボタンのオンマウスイベントと同時に直前のボタンへフォーカスを当てなおす」
です。。。
では、コードをご覧下さい。
-
ButtonA.onRollOver = function() {
-
Selection.setFocus(ButtonB);
-
}
-
ButtonE.onRollOver = function() {
-
Selection.setFocus(ButtonD);
-
}
上から順にBCDと縦にボタン並んでいて、B,Dをそれぞれ上、下とした場合、Bの少し上にダミーAを、Dの少し下にダミーEのボタンを置きます。
「A(E)にフォーカスがあたったら、すぐにB(D)に当て直して下さい」というもの。
B(D)にフォーカスが当たっている状態で上(下)ボタンを押しても処理が一瞬で済んでしまうので、見た目上、動いていないように見える。すなわちループを阻止できるという訳です。
これでようやく解決か。少し寝よう、、

