携帯の画面に入りきらないくらい縦長のFlashLiteアプリを作ることになりまして、これまでになくいろいろ勉強させて頂いている訳ですが、今回地味だけどかなり悩んだ事があったのでメモ。
悩まされたのは「最下部(最上部)のボタンにフォーカスが当たっているときに更に下(上)ボタンを押すと最下部(最上部)に移動してループしてしまう」という仕様。
これを、ループさせず最下部(最上部)で下(上)を押してもフォーカスを移動させず残しておきたい。
まず、もともとそういう事を制御するプロパティとかありそうだ、ということで探してみるが、見つけきれず、、、
そのボタンにオンマウスしたら、他のボタンをすべてenabled = falseで使えなくしつつ、(最下部にフォーカスがあった場合)上ボタンをおした時だけ、復活!そして移動!みたいなこともやってみたが、なんだかうまくいかない。。
ちょっと頭を冷やそうと思ったときに、ふと書いたコードで解決。簡単なことでした。
Button.onRollOut = function() {
if (Key.getCode() == 40) {
Selection.setFocus(this);
}
};
40というのはキーコードで下ボタンを意味します。なので、「下をおしたときはもう一度自分にフォーカスを戻してね」という事になります。(ちなみに上キーは38です)
例えば、1つのswf内でエリア分けしてその中だけで移動を制御したい場合等、特に一番上(下)のボタンでなくても使えそうですね。
(ただし、上下ボタン対応の機種のみで、上下左右使えるものは別ですが、、)
Comments
Powered by Facebook Comments

1 comment
FlashLite ä¸ä¸ãã¿ã³ã§ãã©ã¼ã«ã¹ãæä¸é¨âæä¸é¨ï¼æä¸é¨âæä¸é¨ï¼ã¸ã«ã¼ããããªãããã«ãã says:
4月 17, 2010
[...] 相変わらず、縦長のFlashLiteをやっております。前の記事でフォーカスのループに悩まされていましたが、なんとか解決しました。という事を書いたのですが。話はまわ終わっていません [...]