如何让LibGDX只检测一次点击/点击?

时间:2014-02-09 08:10:59

标签: android macos libgdx

我试图做一个基本的计数器,所以每次点击都会增加一个计数器。我可以让柜台工作,但当我按住手指/点击时,它也会疯狂地增加计数。

代码:

public void render() {
    boolean isTouched = Gdx.input.isTouched();

    if (isTouched) {
        System.out.println(Cash);
        Cash++;

    }

}

此外,虽然我在这里,你如何打印一个会改变每个水龙头的integer/float

赞:font.draw(batch, Cash, 300, 260);

直接上班。

2 个答案:

答案 0 :(得分:5)

您正在做的是轮询输入。但是对于你想要的东西,InputProcessor将是最佳选择:

public class MyInputProcessor implements InputProcessor {
   @Override
   public boolean keyDown (int keycode) {
      return false;
   }

   @Override
   public boolean keyUp (int keycode) {
      cash++; //<----
      return false;
   }

   @Override
   public boolean keyTyped (char character) {
      return false;
   }

   @Override
   public boolean touchDown (int x, int y, int pointer, int button) {
      return false;
   }

   @Override
   public boolean touchUp (int x, int y, int pointer, int button) {
      return false;
   }

   @Override
   public boolean touchDragged (int x, int y, int pointer) {
      return false;
   }

   @Override
   public boolean touchMoved (int x, int y) {
      return false;
   }

   @Override
   public boolean scrolled (int amount) {
      return false;
   }
}

在创建代码中设置:

MyInputProcessor inputProcessor = new MyInputProcessor();
Gdx.input.setInputProcessor(inputProcessor);

参考:Libgdx Wiki Event-Handling

  

如何打印一个可以改变每个水龙头的整数/浮点数?
  喜欢:font.draw(batch,Cash,300,260);
  直接不起作用。

BitmapFont#draw接受一个String,而不是int / float。您必须使用以下其中一项:

Integer.toString(Cash); //or
Float.toString(Cash);

专业提示:不要使用Caps启动变量名称。它应该是cash

答案 1 :(得分:3)

InputProcessor绝对是长期的方式(基于事件的输入更强大,我认为),但你也可以使用的内置黑客是"justTouched" API

if (Gdx.input.justTouched()) {
    System.out.println(Cash);
    Cash++;
}

请参阅https://code.google.com/p/libgdx/wiki/InputPolling