我试图让 Actor
处理 click 和 key 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 不能同时处理click 和key 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/