1

ゲーム画面にプラットフォームボタンがあり、ユーザーがそれを1回押して画面のどこかをクリックして1つのプラットフォームを描画し、画面をもう一度クリックしても何も起こらないようにしようとしています.

現在、プラットフォーム ボタンをクリックする前に、私が望んでいるものは何も起こりません。プラットフォームボタンを押すと、画面をクリックしてプラットフォームを描画できるのですが、プラットフォームボタンを1回押すと、画面をクリックするたびにプラットフォームが描画されるため、プラットフォームのみを描画できるようにするのに苦労しています1つ描きます。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;
        }
    });
4

1 に答える 1