我正在尝试将 touchDown 和 touchUp 事件从演员对象升级到我的 applicationListener 类。为此,我调用了 fire(event); 在我的演员的 InputListener
this.addListener(new InputListener(){
public boolean touchDown(InputEvent event, float x, float y, int pointer, int buttons){
Gdx.app.log("Example", "touch started at (" + x + ", " + y + ")");
fire(event);
return true;
}
public void touchUp(InputEvent event, float x, float y, int pointer, int buttons){
Gdx.app.log("Example", "touch ended at (" + x + ", " + y + ")");
}
});
为了在我的 ApplicationListener 类(包含演员的舞台)中处理事件,我在舞台上添加了一个 InputListener
Gdx.input.setInputProcessor(stage);
stage.addListener(new InputListener(){
public boolean touchDown(InputEvent event, float x, float y, int pointer, int buttons){
Gdx.app.log("FIRE!!!", "I CAUGHT A FIRED EVENT!");
event.stop();
return true;
}
public void touchUp(InputEvent event, float x, float y, int pointer, int buttons){
Gdx.app.log("FIRE!!!", "the fired event even touchupped.");
}
});
但是,当我触摸我的演员时,我会收到 StackOverflowError 以及来自多个 InputListener 的大量异常(我假设事件没有正确停止并传播到我场景中的所有演员)。我在这里想念什么?
同样,在触发事件后,我无法再将 event.getTarget() (这是一个 Actor)投射到我的 Actor-Subclass 中,如果我在 ActorSubclass 本身中执行此操作就可以了。这意味着以下代码在 ApplicationListener 中使用时会产生错误,但在 MyActor 类中有效:
MyActor actor = (MyActor)event.getTarget();
由于目标实际上是一个 MyActor 对象,我如何不仅可以作为 Actor 访问它,而且可以作为 MyActor 访问它?