java - Actor 可以处理点击和按键事件吗?

标签 java libgdx scene2d

我试图让 Actor 处理 clickkey down 事件。我按如下方式初始化了 actor(在本例中为 Image):

stage = new Stage();
texture = new Texture("badlogic.jpg");
Image image = new Image(texture);
image.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        Gdx.app.log("Image ClickListener", "clicked");
    }

    @Override
    public boolean keyDown(InputEvent event, int keycode) {
        Gdx.app.log("Image ClickListener", "keyDown. keycode=" + keycode);
        return true;
    }
});
stage.addActor(image);
Gdx.input.setInputProcessor(stage);

当我点击 image 时,clicked 事件按预期触发,即,我看到相应的日志。但是,无论我按什么键,key down 事件都不会触发。我的问题是:为什么? Actor 不能同时处理clickkey down 事件吗?

最佳答案

默认情况下,您应该将键盘监听器附加到舞台,因为舞台上有键盘焦点,所以它应该类似于

    stage.addListener(new InputListener() 
    {
        @Override
        public boolean keyDown(InputEvent event, int keycode) 
        {
            Gdx.app.log("Image ClickListener", "keyDown. keycode=" + keycode);
            return true;
        }
    });

如果你想将焦点转移到 Actor 身上,你可以使用 Stage 来实现。方法setKeyboardFocus(Actor actor)。它应该是这样的:

    image.addListener(new ClickListener() 
    {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            Gdx.app.log("Image ClickListener", "clicked");
        }

        @Override
        public boolean keyDown(InputEvent event, int keycode) {
            Gdx.app.log("Image ClickListener", "keyDown. keycode=" + keycode);
            return true;
        }
    });

    stage.setKeyboardFocus(image);

关于java - Actor 可以处理点击和按键事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824933/

相关文章:

java - Infinispan JGROUPS 强制更改 View

java - Libgdx 异步使用 ScreenUtils 并且不停止游戏循环

java - Libgdx场景2D : Add table in seperate class

java - 在LibGDX scene2d中,更改选择框的项目后,它不再具有默认监听器

java - 在 Android 中设置日期和所需时间

java - 查找具有特定位集的多头的所有组合

java - Libgdx - 触摸按钮时如何退出应用程序?

java - 自定义 Actor 的 Libgdx scene2d.ui InputListener 不起作用

java - 我可以使用带有 log4j.properties 文件的 log4j 1.x 异步运行我的日志吗?

libgdx - 桌面上的 TextureAtlas 问题,从 Eclipse 导出