Я создал Skin Dialog в моей игре LIBGDX и добавил две текстовые кнопки. Я добавил к ним Слушатели, но они по-прежнему не активны.
Я искал все, что мог во всем Интернете и в стеке, и похоже, что я поступаю правильно, но я не знаю, что именно пошло не так
Вот мой код:
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);
EDIT:
ОК. Думаю, я решил проблему с addListener, используя InputListener вместо ChangeListener:
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 () не работают