之前我已发布此question,但即使我确实收到了很多人的帮助,但似乎我无处可去。因此我做了一个小实验。我创建了一个测试项目来测试LibGdx触摸处理。这个touchTester项目以某种方式复制了我的问题。附件(附件已删除)请查找整个项目源代码(压缩文件)。以下代码中的upCounter应该只返回1,因为它只需要运行一次。
// upCounter is = 0;
this.libgdxImg.addListener(new InputListener() {
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
return true;
}
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
upCounter++;
touchtester.doLog("upCounter = " + upCounter);
}
});
但是,当我运行它时,它会给我这个结果
catland: touchTester: render
catland: touchTester: render
catland: touchTester: upCounter = 1
catland: touchTester: upCounter = 2
...
catland: touchTester: upCounter = 94
catland: touchTester: upCounter = 95
catland: touchTester: render
catland: touchTester: render
我可以请某人帮忙测试一下吗?我完全不知道问题出在哪里。我使用gdx-setup-ui.jar文件设置我的项目。
答案 0 :(得分:1)
你错过了这里最重要的部分。您添加new InputListener...
的代码位于render()
方法中。
这不应该是怎么回事。它的基本功能是在每个帧中为您的图像添加一个新的匿名InputListener
。所有听众都会收到通知,他们都会为您的upcounter
添加1。将代码移动到show()
方法,它应该按预期工作。