LibGDX:实现触摸屏,无需触摸屏幕

时间:2017-12-06 12:49:48

标签: java android libgdx touchscreen

我正在使用LibGDX。

让我们说我不会跳 - 但不是真的触摸屏幕,我不想使用键盘forsay,并实现触摸,就像我触摸屏幕。 我可以这样做吗?

一个人可以说"测试"没有按下它的按钮(从应用程序的触摸屏/ 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;
    }
});

我感谢你。

2 个答案:

答案 0 :(得分:1)

可能。我不确定这是否有效。现在不能测试。您可以使用Actor fire(Event event)方法。

imageJumpButton.fire(InputEvent.Type.touchDown);

imageJumpButton.fire(InputEvent.Type.touchUp);

答案 1 :(得分:1)

我建议使用Button类作为按钮而不是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添加到按钮中。