テストのためのチックタックトーンゲームを構築するために、私は次のルーチンを持っています。しかし問題は、ワンタッチであまりにも多くのイベントが発生していることです。私は、isTouched()がダウン、アップ、移動のすべてを返すと考えています。ちょうどイベントを起こす方法はありますか?LIBGDXから不必要なタッチイベントを取得する
UPDATE:代わりにjustTouched()を使用して問題を解決しました。それはあなたの入力をより詳細に制御を与えるタッチアップ(X、Y、ポインター、ボタン)を有するよう
@Override
public void render() {
// we update the game state so things move.
updateGame();
// First we clear the screen
GL10 gl = Gdx.graphics.getGL10();
gl.glViewport(0, 0, width, height);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// Next we update the camera and set the camera matrix
camera.update();
camera.apply(Gdx.gl10);
...
}
private void updateGame() {
// the delta time so we can do frame independant time based movement
float deltaTime = Gdx.graphics.getDeltaTime();
// Has the user touched the screen? then position the paddle
if (Gdx.input.isTouched() && !isProcess) {
// get the touch coordinates and translate them
// to the game coordinate system.
isProcess=true;
int width = Gdx.graphics.getWidth();
int height = Gdx.graphics.getHeight();
int offx=-width/2;
int offy=-height/2;
float x = Gdx.input.getX();
float y = Gdx.input.getY();
float touchX = 480 * (x
/(float) width - 0.5f);
float touchY = 320 * (0.5f - y
/(float) height);
for(int i=0;i<3;i++) {
for(int j=0;j<3;j++)
{
if(touchX >= offx+i*width/3 && touchX < offx+(i+1)*width/3 &&
touchY >= offy+j*height/3 && touchY < offy+(j+1)*height/3)
{
if(isCurrentO)
data[i][j]=CellStatus.O;
else
data[i][j]=CellStatus.X;
isCurrentO=!isCurrentO;
break;
}
}
}
isProcess=false;
}
}