Actor 的 InputListener
InputListener for the Actor
我有一个问题,当我按下任意键时,keyDown
事件从未在 Actor 中触发。不过,touchDown
(鼠标点击)有效。
演员代码:
public class MapActor extends Actor {
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private int directions = 0;
private OrthographicCamera camera;
public MapActor(String pathToMap, OrthographicCamera camera) {
TmxMapLoader loader = new TmxMapLoader();
map = loader.load(pathToMap);
renderer = new OrthogonalTiledMapRenderer(map);
this.camera = camera;
this.setBounds(0, 0, 500, 500);
this.addListener(new InputListener() {
// a - 29, w - 51, d - 32, s - 47
@Override
public boolean keyDown(InputEvent event, int keycode) {
System.out.println("Test");
return true;
}
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log("Touch", "touch down");
return true;
}
});
}
@Override
public void act(float delta) {
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
renderer.setView(camera);
renderer.render();
batch.begin();
}
public void dispose() {
renderer.dispose();
map.dispose();
}
}
以下是我将 Actor 添加到 Stage
的方法:
@Override
public void create () {
stage = new Stage(new ScreenViewport());
Gdx.input.setInputProcessor(stage);
MapActor mapActor = new MapActor("maps/testmap.tmx", (OrthographicCamera) stage.getCamera());
stage.addActor(mapActor);
}
欢迎提出任何建议。
只有拥有键盘焦点的演员才会收到键盘事件。
要设置哪个演员有键盘焦点,您可以使用以下...
`Stage.setKeyboardFocus(Actor actor);`
从那时起,键盘事件将传递给指定的演员。
我有一个问题,当我按下任意键时,keyDown
事件从未在 Actor 中触发。不过,touchDown
(鼠标点击)有效。
演员代码:
public class MapActor extends Actor {
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private int directions = 0;
private OrthographicCamera camera;
public MapActor(String pathToMap, OrthographicCamera camera) {
TmxMapLoader loader = new TmxMapLoader();
map = loader.load(pathToMap);
renderer = new OrthogonalTiledMapRenderer(map);
this.camera = camera;
this.setBounds(0, 0, 500, 500);
this.addListener(new InputListener() {
// a - 29, w - 51, d - 32, s - 47
@Override
public boolean keyDown(InputEvent event, int keycode) {
System.out.println("Test");
return true;
}
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log("Touch", "touch down");
return true;
}
});
}
@Override
public void act(float delta) {
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
renderer.setView(camera);
renderer.render();
batch.begin();
}
public void dispose() {
renderer.dispose();
map.dispose();
}
}
以下是我将 Actor 添加到 Stage
的方法:
@Override
public void create () {
stage = new Stage(new ScreenViewport());
Gdx.input.setInputProcessor(stage);
MapActor mapActor = new MapActor("maps/testmap.tmx", (OrthographicCamera) stage.getCamera());
stage.addActor(mapActor);
}
欢迎提出任何建议。
只有拥有键盘焦点的演员才会收到键盘事件。
要设置哪个演员有键盘焦点,您可以使用以下...
`Stage.setKeyboardFocus(Actor actor);`
从那时起,键盘事件将传递给指定的演员。