我在游戏屏幕上有一个平台按钮,我试图让它让用户按下它一次,点击屏幕上的某个地方来绘制一个平台,然后如果他们再次点击屏幕,什么都不会发生。
现在,在我点击平台按钮之前,没有任何事情发生,这正是我想要的。当我按下平台按钮时,用户可以点击屏幕来绘制平台,但是,在按下平台按钮一次后,每次点击屏幕都会绘制一个平台,所以我无法制作它,所以他们只能画一张。我认为使用 removeProcessor() 会起作用,但事实并非如此。
InputController inputProcessor;
InputMultiplexer multiplexer;
public GameScreen(FallDown game) {
this.game = game;
GAMESCREEN_STATE = WORLD_STATE_READY;
this.cam = new OrthographicCamera(FRUSTUM_WIDTH, FRUSTUM_HEIGHT);
this.cam.position.set(FRUSTUM_WIDTH / 2, FRUSTUM_HEIGHT / 2, 0);
this.cam.setToOrtho(false, FRUSTUM_WIDTH, FRUSTUM_HEIGHT);
batch = new SpriteBatch();
world = new World();
renderer = new WorldRenderer(batch, world);
cam.position.set(FRUSTUM_WIDTH / 2, 105, 0);
inputProcessor = new InputController(game, world, cam);
multiplexer = new InputMultiplexer();
}
然后,在我的渲染方法结束时,我有
multiplexer.addProcessor(stage);
Gdx.input.setInputProcessor(multiplexer);
这些是我的按钮的侦听器,我只是使用重置按钮作为阻止用户使用绘图平台的替代方法。
reset_button.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
multiplexer.removeProcessor(inputProcessor);
return true;
}
});
platform_button.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
if (GAMESCREEN_STATE != WORLD_STATE_RUNNING) {
multiplexer.addProcessor(new InputController(game, world, cam));
}
return true;
}
});