LIBGDX对话框TextButton

时间:2019-01-18 16:30:20

标签: libgdx dialog stage skin

我在LIBGDX游戏中创建了一个外观对话框,并添加了两个TextButton。我向它们添加了侦听器,但是它们仍然不可点击。

我已经在Internet和stackoverflow上搜索了所有可能的内容,看起来我在做正确的事,但我不知道到底出了什么问题

这是我的代码:

if (uiController.coinsIsReleased){

        label = new Label("GET FREE COINS?", uiSkin);
        label.setColor(0,0,1,1);
        label.setAlignment(Align.center);

        dialog = new Dialog("", uiSkin);

        ok = new TextButton("YES", uiSkin, "small");
        cancel = new TextButton("CANCEL", uiSkin, "small");


        dialog.getButtonTable().add(ok).width(100);
        dialog.getButtonTable().add(cancel).width(100);
        dialog.getContentTable().add(label);

        ok.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {

                System.out.println("OKOKOK");
            }
        });
        cancel.addListener(new ChangeListener() {
         @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {

                    System.out.println("CANCELLED");

            }
        });


        stage.addActor(dialog);

        dialog.show(stage);


    }

我添加了InputMultiplexer并添加了Stage和InputAdapter,然后将其设置为InputProcessor。

下面的代码:

    multiplexer = new InputMultiplexer();
    stage = new Stage();
    uiController = new MenuUIController(game);
    multiplexer.addProcessor(stage);
    multiplexer.addProcessor(uiController);
    Gdx.input.setInputProcessor(multiplexer);

编辑:

好的,我想我已经使用InputListener而不是ChangeListener解决了addListener问题:

    cancel.addListener(new InputListener(){
            @Override
            public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                //dialog.cancel();
                //dialog.hide();
                System.out.println("CANCELLED");
                return true;
            }
        });

我想取消对话框并继续其他操作,但是dialog.cancel()和dialog.hide()无法正常工作

0 个答案:

没有答案