Java LibGDX:实现触摸屏,不触摸屏幕

Java LibGDX:实现触摸屏,不触摸屏幕,java,android,libgdx,touchscreen,Java,Android,Libgdx,Touchscreen,我正在使用LibGDX 比方说,我不想跳,但不是真的触摸屏幕,我不想使用键盘,实现触摸,就像触摸屏幕一样。 我可以这样做吗 我们可以不按按钮就说“测试”按钮吗(从应用程序/android/ios/等的触摸屏上) InputListener中的按钮示例: final Image imageJumpButton = new Image(new Texture("jbjump.png")); imageJumpButton.addListener(new InputListener() {

我正在使用LibGDX

比方说,我不想跳,但不是真的触摸屏幕,我不想使用键盘,实现触摸,就像触摸屏幕一样。 我可以这样做吗

我们可以不按按钮就说“测试”按钮吗(从应用程序/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)
方法

imageJumpButton.fire(InputEvent.Type.touchDown);


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

imageJumpButton.fire(InputEvent.Type.touchDown);


我建议对按钮使用
按钮
类,而不是
图像
。有一种方便的方法可以使用
按钮执行您的请求:

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。

我建议对按钮使用
按钮
类,而不是
图像
。有一种方便的方法可以使用
按钮执行您的请求:

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添加到按钮。

我需要以一种方式使用此按钮:按住时,做一些事情,不按住时,什么都不做。e、 g按钮用于跑步。谢谢。更新了答案。我需要以这样的方式使用这个按钮:按住,做点什么,不按住,什么都不做。e、 g按钮用于跑步。谢谢。更新了答案