libgdx actor touchHandling问题

时间:2014-03-04 02:41:45

标签: java android touch libgdx

之前我已发布此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文件设置我的项目。

1 个答案:

答案 0 :(得分:1)

你错过了这里最重要的部分。您添加new InputListener...的代码位于render()方法中。

这不应该是怎么回事。它的基本功能是在每个帧中为您的图像添加一个新的匿名InputListener。所有听众都会收到通知,他们都会为您的upcounter添加1。将代码移动到show()方法,它应该按预期工作。