gpt4 book ai didi

java - 从 LIBGDX 获取不必要的触摸事件

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:12 25 4
gpt4 key购买 nike

为了构建一个井字游戏进行测试,我有以下例程。但问题是,我只需轻轻一按就收到了太多事件。我怀疑 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;
}

}

最佳答案

使用 justTouched 的另一种方法是实现 InputProcessor界面,因为它有一个 touchUp(x,y,pointer,button),可以让您更好地控制输入。有几个类可以实现此功能,或者您可以让您的类实现它。

关于java - 从 LIBGDX 获取不必要的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com