我在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()无法正常工作