携帯の画面に入りきらないくらい縦長のFlashLiteアプリを作ることになりまして、これまでになくいろいろ勉強させて頂いている訳ですが、今回地味だけどかなり悩んだ事があったのでメモ。

悩まされたのは「最下部(最上部)のボタンにフォーカスが当たっているときに更に下(上)ボタンを押すと最下部(最上部)に移動してループしてしまう」という仕様。

これを、ループさせず最下部(最上部)で下(上)を押してもフォーカスを移動させず残しておきたい。

まず、もともとそういう事を制御するプロパティとかありそうだ、ということで探してみるが、見つけきれず、、、

そのボタンにオンマウスしたら、他のボタンをすべてenabled = falseで使えなくしつつ、(最下部にフォーカスがあった場合)上ボタンをおした時だけ、復活!そして移動!みたいなこともやってみたが、なんだかうまくいかない。。

ちょっと頭を冷やそうと思ったときに、ふと書いたコードで解決。簡単なことでした。

Button.onRollOut = function() {
if (Key.getCode() == 40) {
Selection.setFocus(this);
}
};

40というのはキーコードで下ボタンを意味します。なので、「下をおしたときはもう一度自分にフォーカスを戻してね」という事になります。(ちなみに上キーは38です)

例えば、1つのswf内でエリア分けしてその中だけで移動を制御したい場合等、特に一番上(下)のボタンでなくても使えそうですね。

(ただし、上下ボタン対応の機種のみで、上下左右使えるものは別ですが、、)

Comments

Powered by Facebook Comments