响应另一个 InputListerner 的 Actor
Actor responding to another InputListerner
假设我有一个响应 InputListener 的 Actor
如何阻止此 actor 在前一个 InputListener 完成之前响应另一个 InputListener
我有以下 classes :
class 我的演员
public class MyActor extends Image {
public MyActor() {
super(new Texture("img.png"));
setPosition(100, 100);
debug();
}
}
class 测试屏幕
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();
}
}
Actor 有一个 getActions() 方法,可以列出所有当前操作。一旦动作完成,它就会从 Actor 中移除。在允许您的 actor 响应其他侦听器事件之前,检查 actor 当前的操作并从那里做出您的决定。 (即,如果您的演员仍然有之前的动作,那么 "ignore" 听众的事件)
您还可以创建顺序动作,即连续执行 2 个或更多动作。第二个(或最后一个)动作可以是一个 RunnableAction,在它的 运行() 方法中,您可以向您的 Actor 提供进一步的指示(例如:"OK to accept new events")。当其他操作完成时,第二个选项有点像回调。
假设我有一个响应 InputListener 的 Actor
如何阻止此 actor 在前一个 InputListener 完成之前响应另一个 InputListener
我有以下 classes :
class 我的演员
public class MyActor extends Image {
public MyActor() {
super(new Texture("img.png"));
setPosition(100, 100);
debug();
}
}
class 测试屏幕
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();
}
}
Actor 有一个 getActions() 方法,可以列出所有当前操作。一旦动作完成,它就会从 Actor 中移除。在允许您的 actor 响应其他侦听器事件之前,检查 actor 当前的操作并从那里做出您的决定。 (即,如果您的演员仍然有之前的动作,那么 "ignore" 听众的事件)
您还可以创建顺序动作,即连续执行 2 个或更多动作。第二个(或最后一个)动作可以是一个 RunnableAction,在它的 运行() 方法中,您可以向您的 Actor 提供进一步的指示(例如:"OK to accept new events")。当其他操作完成时,第二个选项有点像回调。