假设我有一个响应InputListener的Actor
如何阻止此actor响应另一个InputListener,直到上一个完成
我有以下课程:
类MyActor
public class MyActor extends Image {
public MyActor() {
super(new Texture("img.png"));
setPosition(100, 100);
debug();
}
}
类TestScreen
public class TestScreen implements Screen {
GameMain gameMain;
Stage stage;
MyActor myActor;
public TestScreen(GameMain gameMain) {
this.gameMain = gameMain;
}
@Override
public void show() {
stage = new Stage();
myActor = new MyActor();
//addlistener to actor
myActor.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
RotateByAction rba = new RotateByAction();
rba.setAmount(90.0f);
rba.setDuration(3.0f);
myActor.addAction(rba);
System.out.println("actor is rotating");
return true;
}
});
stage.addActor(myActor);
Gdx.input.setInputProcessor(stage);
}
@Override
public void render(float delta) {
stage.act(delta);
stage.draw();
}
}
答案 0 :(得分:1)
Actor有一个getActions()方法,列出所有当前操作。一旦动作完成,它将从Actor中删除。在允许演员回应其他侦听器事件之前,请检查演员当前的操作并从那里做出决定。 (即,如果你的演员仍然有前一个动作,那么“忽略”听众的事件)
您还可以创建序列操作,这些操作是连续执行的2个或更多操作。第二个(或最后一个)动作可以是RunnableAction,并且在它的run()方法中,您可以向Actor提供进一步的指令(例如:“确定接受新事件”)。第二个选项有点像其他操作完成时的回调。