2012-01-03 11 views
1

テストのためのチックタックトーンゲームを構築するために、私は次のルーチンを持っています。しかし問題は、ワンタッチであまりにも多くのイベントが発生していることです。私は、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; 
    } 

} 

答えて

1

justTouchedを使用する代わりに、InputProcessorインタフェースを実装することです。これを実装するクラスがいくつかありますが、クラスで実装することもできます。

0

たとえばハッシュマップを使用してボードを作成することができます。ゲーム内の各オブジェクトは、オブジェクトに触れてボードに入ったときにそのボードにクリック可能になりたい場合にイベントを捕捉します。そうでなければ、それはイベントをキャッチしません。とても簡単! :)