получать ненужные сенсорные события от LIBGDX - PullRequest
1 голос
/ 03 января 2012

Чтобы построить игру в крестики-нолики для тестирования, у меня есть следующая процедура.Но проблема в том, что я получаю слишком много событий за одно касание.Я подозреваю, что isTouched () возвращает все вниз, вверх и двигаться.Есть ли способ просто вызвать событие?

ОБНОВЛЕНИЕ: Устранена проблема с использованием взамен justTouched ().

@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;
    }

}

Ответы [ 2 ]

1 голос
/ 03 января 2012

Альтернативой использованию justTouched является реализация интерфейса InputProcessor , так как он имеет TouchUp (x, y, указатель, кнопка), который дает вам больший контроль над вводом.Есть несколько классов, которые реализуют это, или вы можете сделать так, чтобы ваш класс это реализовал.

0 голосов
/ 14 марта 2013

Например, вы можете создать доску (с хэш-картой), и каждый объект в вашей игре хочет, чтобы его можно было кликнуть, добавить себя на эту доску, если к объекту прикоснулись и он был на доске, он поймает событие.Если нет, это не поймает событие.Так просто!:)

...