如何在ClickListener(Libgdx)中触发keyDown()或keyUp()

问题描述 投票:0回答:1

我写了一个演示来测试按钮,但我有一个小问题。 keyDown 和 keyUp 不起作用。像这样的代码。

我创建了一个按钮加入阶段,并在按钮上添加了ClickListener,监听器可以工作,但是无法触发ClickListener中的keyDown和keyUp方法,为什么以及如何触发它

按钮屏幕

public class ButtonScreen implements Screen {

    public OrthographicCamera camera;
    public Stage stage;

    public ButtonScreen() {
        
        camera = new OrthographicCamera();
        
        Viewport viewport = new ScreenViewport(camera);
        stage = new Stage(viewport);

        //add stage to Inputprocessor
        Gdx.input.setInputProcessor(stage);

        //make button
        Button button = new Button(new TextureRegionDrawable(ImgConsUtil.timeFileAtlas.findRegion(CardConstant.DO)),
                new TextureRegionDrawable(ImgConsUtil.timeFileAtlas.findRegion(CardConstant.ONE_TIME)));
        button.setPosition(200,200);
        button.addListener(new MyButtonClickListener());

        //add button to stage
        stage.addActor(button);
    }

    @Override
    public void render(float delta) {

        camera.update();
        PreparClass.batch.setProjectionMatrix(camera.combined);
        
        stage.act();
        
        stage.draw();

    }
}

我的按钮点击监听器

public class MyButtonClickListener extends ClickListener{

    @Override
    public boolean keyDown (InputEvent event, int keycode) {
       
        System.out.println("keyDown");
        return true;
    }

    @Override
    public boolean keyUp (InputEvent event, int keycode) {
        
        System.out.println("keyUp");
        return true;
    }

    @Override
    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
        System.out.println("touchdown");
        return false;
    }

    public void clicked(InputEvent inputEvent, float x,float y){
        System.out.println("clicked");
    }

我按下按键,但不会运行到 keyup 或 keydown

libgdx
1个回答
0
投票

我找到原因了,按钮没有获得焦点,不响应任何事件。仅当单击鼠标时它才会获得焦点。也就是说,Button只响应点击事件。所以,如果你想获取键盘事件,只需为“Stage”设置一个“Listener”即可。

© www.soinside.com 2019 - 2024. All rights reserved.