ドゥアイネットのプログラマー、湯川が開発日記を綴ります。

CALENDAR
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
ARCHIVES
CATEGORIES
<< Accordion使用時のURL引数非表示 | main | MySQLでLock wait timeout exceededエラー >>
上下キーイベント
上下キーで予定を選択できるようにflashLiteで実装しました。
画像

最初は以下の方法でやってみました。

オブジェクトを作成して、キーイベントを取得する方法です。

var v_keyListener:Object = new Object();

v_keyListener.onKeyDown = function() {
 if (Key.getCode() == Key.UP){
  trace("上");
 }
 else if  (Key.getCode() == Key.DOWN){
  trace("下");
 }
};

Key.addListener(v_keyListener);

開発環境では、これで上下キーイベントをとることができたのですが、
実機だとイベントをとることができません。
※ソフトバンクの携帯だけイベントをとれました。

以下のサイトを参考にして、コードを書き換えました。
http://blog.nautes.cc/?p=128

ダミーボタンを用意して、それがフォーカスされたイベントを
利用して、上下キーどちらが押されたかを取得しています。
画像
※左下の青い3つのボタンがダミーボタンです。

ボタンは透明にしてフォーカス枠を表示しないように設定します。
this.upDown_1._alpha = 0;
this.upDown_1._focusrect = false;

ボタン1
on (rollOver) {

 if (_root.g_upDownFlg == -1){
  trace("上");
 }
 if (_root.g_upDownFlg == 2) {
  trace("上");
 } else if (_root.g_upDownFlg == 3) {
  trace("下");
 }
 _root.g_upDownFlg = 1;
}

ボタン2
on (rollOver) {

 _focusrect=false
 if (_root.g_upDownFlg ==3) {
  trace("上");
 } else if (_root.g_upDownFlg == 1) {
  trace("下");
 }
 _root.g_upDownFlg = 2;
}

ボタン3
on (rollOver) {

 if (_root.g_upDownFlg == -1){
  trace("上");
 }
 
 if (_root.g_upDownFlg == 1) {
  trace("上");
 } else if (_root.g_upDownFlg == 2) {
  trace("下");
 }
 _root.g_upDownFlg = 3;
}

この方法で、ソフトバンク以外でも上下キーイベントができました。
| flashlite | 14:01 | comments(0) | - |
コメント
コメントする