LibGDX:实现触摸屏,不触摸屏幕
LibGDX: Implement touch screen, without touching the screen
我正在使用 LibGDX。
假设我不想跳跃 - 但不是真正触摸屏幕,我不想使用键盘来实现触摸,就像我正在触摸屏幕一样。
我可以吗?
我们可以说 "test" 按钮而不按下它吗(从应用程序的触摸屏/android / ios / 等等)?
来自 InputListener 的按钮示例:
final Image imageJumpButton = new Image(new Texture("jbjump.png"));
imageJumpButton.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
JOYSTICK_UP= true;
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
JOYSTICK_UP = false;
}
});
谢谢你。
可能吧。我不确定这是否有效。现在不能测试。您可以使用 Actor fire(Event event)
方法。
imageJumpButton.fire(InputEvent.Type.touchDown);
或
imageJumpButton.fire(InputEvent.Type.touchUp);
我建议使用 Button
class 作为按钮而不是 Image
。有一种方便的方法可以使用 Button
:
来完成您的要求
final Button imageJumpButton = new Button(new TextureRegionDrawable(new TextureRegion(new Texture("jbjump.png"))));
//use ChangeListener instead of InputListener
imageJumpButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Gdx.app.log("", "Button is pressed");
}
});
然后您可以通过编程方式按下按钮:
//this will trigger changed() method of the ChangeListener
imageJumpButton.toggle();
更新
如果你想做一些事情,当按钮被按下时,在你的 render()
方法中调用它:
if (button.isPressed())
//do something each frame, while button is pressed
例如,如果您希望玩家在按下按钮时 运行,它会是这样的:
public void update(float deltaTime) {
if (button.isPressed())
player.x += deltaTime * velocityX;
}
顺便说一句,在这种情况下,您不需要将 ChangeListener 添加到按钮。
我正在使用 LibGDX。
假设我不想跳跃 - 但不是真正触摸屏幕,我不想使用键盘来实现触摸,就像我正在触摸屏幕一样。 我可以吗?
我们可以说 "test" 按钮而不按下它吗(从应用程序的触摸屏/android / ios / 等等)?
来自 InputListener 的按钮示例:
final Image imageJumpButton = new Image(new Texture("jbjump.png"));
imageJumpButton.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
JOYSTICK_UP= true;
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
JOYSTICK_UP = false;
}
});
谢谢你。
可能吧。我不确定这是否有效。现在不能测试。您可以使用 Actor fire(Event event)
方法。
imageJumpButton.fire(InputEvent.Type.touchDown);
或
imageJumpButton.fire(InputEvent.Type.touchUp);
我建议使用 Button
class 作为按钮而不是 Image
。有一种方便的方法可以使用 Button
:
final Button imageJumpButton = new Button(new TextureRegionDrawable(new TextureRegion(new Texture("jbjump.png"))));
//use ChangeListener instead of InputListener
imageJumpButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Gdx.app.log("", "Button is pressed");
}
});
然后您可以通过编程方式按下按钮:
//this will trigger changed() method of the ChangeListener
imageJumpButton.toggle();
更新
如果你想做一些事情,当按钮被按下时,在你的 render()
方法中调用它:
if (button.isPressed())
//do something each frame, while button is pressed
例如,如果您希望玩家在按下按钮时 运行,它会是这样的:
public void update(float deltaTime) {
if (button.isPressed())
player.x += deltaTime * velocityX;
}
顺便说一句,在这种情况下,您不需要将 ChangeListener 添加到按钮。