libGDX进行接地循环直到接地

libGDX进行接地循环直到接地,libgdx,Libgdx,我正在用libGDX做游戏 我想实现游戏控制,但我对着陆方法有问题。着陆方法只运行一次。我想在接地时循环,直到接地结束。有人能帮我吗 class onPlayerGoLeftListener extends InputListener { public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { //start runnable (move pl

我正在用libGDX做游戏

我想实现游戏控制,但我对
着陆方法有问题。着陆方法只运行一次。我想在接地时循环,直到接地结束。有人能帮我吗

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、 我不喜欢使用main update方法来执行此操作

您不能在事件回调或渲染回调中“循环”,因为整个系统将停止。获得所需内容的一种方法是在
触地
方法中设置一个标志,清除
触地
方法中的标志,然后将循环的“主体”放入
渲染
,由您的标志保护

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
   }
   ...
}
在render()或绘制线程中,您可以使用

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

enableRepeatableEvent(true)也是解决方案吗?或者这只是用于键盘事件?我正在使用你上面写的方法,但我想知道其他解决方案是否可行。