libGDX使touchDown循环直到touchUp

时间:2014-02-09 22:41:11

标签: libgdx

我正在用libGDX制作游戏。

我想实现游戏控件,但我遇到了touchDown方法的问题。 touchDown方法只运行一次。我想在touchDown中循环,直到调用touchUp。有人能帮我吗 ?

class  onPlayerGoLeftListener extends InputListener {

    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
        //start runnable   (move player)     

        return true;
    }

    public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
        //stop runnable
    }

}

由于

P.S。我不喜欢使用主更新方法来执行此操作

2 个答案:

答案 0 :(得分:9)

您无法在事件回调或渲染回调中“循环”,因为整个系统将停止。获得所需内容的一种方法是在touchDown方法中设置标记,清除touchUp方法中的标记,然后将循环的“正文”放在render中,由你的国旗守卫。

boolean touchActive = false;

public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
   //start runnable   (move player)     
   touchActive = true;
   return true;
}

public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
   //stop runnable
   touchActive = false;
}


public void render(float delta) {
   ...
   if (touchActive) {
      // Do one iteration of your "while" loop
   }
   ...
}

答案 1 :(得分:0)

在render()或绘制线程中,您只需使用

即可
 if (Gdx.input.isTouched()){
  //some thing move()
}