gpt4 book ai didi

java - InputListener 停留在类之间

转载 作者:行者123 更新时间:2023-11-30 09:17:34 25 4
gpt4 key购买 nike

我正在使用 LIBGDX 构建一个简单的游戏,我遇到了这个恼人的问题。

我有一个 MenuScreen.java 类,它看起来像这样:

Here是 pastebin 上的完整类(class)

重要的部分是imageButton的inputListener:

button.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
MineFinder.Log.debug("xpos: " + x + ", ypos: " + y);
game.setScreen(new GameScreen(game));
}
});

我的问题是,如果出于某种原因存在此类(并且由此调用 GameScreen),如果我单击 ImageButton 在 GameScreen 中的位置,它仍会处理输入。这真的很烦人,因为如果玩家点击屏幕的那部分,游戏就会重置。

如果我删除对我的 MenuScreen.java 文件的引用,并完全跳过它,问题就不存在了,所以我很确定问题是 InputListener 没有被“删除”

有什么解决办法吗?

谢谢!

最佳答案

问题是在你的resize方法。这一行:

Gdx.input.setInputProcessor(stage);

全局输入处理器设置为舞台。输入处理代码并不真正关心屏幕上呈现的内容。

我认为最简单的解决方法是在 show 中设置输入处理器并在 hide 中清除它.像这样:

@Override
public void show() {
Gdx.input.setInputProcessor(stage);
}

@Override
public void hide() {
Gdx.input.setInputProcessor(null);
}

或者,您可以让您的回调检查它们所在的按钮/阶段/屏幕是否处于 Activity 状态,或者取消注册/重新注册 show 中的回调/hide ,具体取决于您使用屏幕的方式。

关于java - InputListener 停留在类之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880499/

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