2011年1月25日火曜日

Androidでキーリピート

アンドロイドでボタンを押しているあいだ(タッチしているあいだ)毎回呼ばれる処理を実装する話です。
ゲーム作るときには必須の処理だと思います。

onTouch(View v, MotionEvent me)の中でボタンが押されたら(DOWN)リピートフラグをtrueにする。ボタンが離されたら(UP)リピートフラグをfalseにする。
メインループであるonDrawFrame(GL10 gl)の中でキーリピートしているときにコールバックされるオブジェクトを登録する。
private Runnable mLongPressAction = new Runnable() {
  public void run() {//コールバックされる
  //ここにキーリピートされたときの処理を書く
  }
};

private boolean repeat = false;
public boolean onTouch(View v, MotionEvent me) {
  if(me.getAction() == me.ACTION_DOWN) {
    repeat = true;
  }
  if(me.getAction() == me.ACTION_UP) {
    repeat = false;
  }
  return false;
}

private int LONG_PRESS_DELAY = 1;//ミリ秒
private Handler mHandler = new Handler();
public void onDrawFrame(GL10 gl) {//毎回呼ばれる
  if(repeat)
  {//キーリピートされているあいだは毎回コールバックされるオブジェクトを登録
    mHandler.postDelayed(mLongPressAction, LONG_PRESS_DELAY);
  }
}





0 件のコメント:

コメントを投稿