我正在用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。我不喜欢使用主更新方法来执行此操作
答案 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()
}