我是LibGDX的新手。我遇到的一个问题是当按下按钮时按钮会相互反应。例如,在我的下面的代码中,当我按下其中一个按钮时,我希望其他两个按钮自动被按下(三个按钮中只有一个可以在其中一次按下状态)。我遇到的问题是按钮切换状态似乎有相当多的延迟。
public MenuStateTest(GameStateManager gsm) {
super(gsm);
cam.setToOrtho(false, MyGame.WIDTH, MyGame.HEIGHT);
fitViewport = new FitViewport(MyGame.WIDTH, MyGame.HEIGHT);
stage = new Stage(fitViewport);
Gdx.input.setInputProcessor(stage);
font = new BitmapFont();
skin = new Skin();
buttonAtlas = new TextureAtlas("buttonTest.pack");
skin.addRegions(buttonAtlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("1BBlock");
textButtonStyle.down = skin.getDrawable("T1BBlock");
button = new TextButton("", textButtonStyle);
stage.addActor(button);
button.setPosition(20, 200);
button.getStyle().checked = button.getStyle().down;
button.setChecked(false);
button2Atlas = new TextureAtlas("Button2Test.pack");
skin.addRegions(button2Atlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("2BBlock");
textButtonStyle.down = skin.getDrawable("T2BBlock");
button2 = new TextButton("", textButtonStyle);
stage.addActor(button2);
button2.setPosition(175, 200);
button2.getStyle().checked = button2.getStyle().down;
button2.setChecked(true);
button3Atlas = new TextureAtlas("Button3Test.pack");
skin.addRegions(button3Atlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("3BBlock");
textButtonStyle.down = skin.getDrawable("T3BBlock");
button3 = new TextButton("", textButtonStyle);
stage.addActor(button3);
button3.setPosition(330, 200);
button3.getStyle().checked = button3.getStyle().down;
button3.setChecked(true);
}
@Override
protected void handleInput() {
if(button.isChecked()&& button.isPressed()){
button.setChecked(false);
button2.setChecked(true);
button3.setChecked(true);
}
if(button2.isChecked()&& button2.isPressed()){
button.setChecked(true);
button2.setChecked(false);
button3.setChecked(true);
}
if(button3.isChecked()&& button3.isPressed()){
button.setChecked(true);
button2.setChecked(true);
button3.setChecked(false);
}
}
@Override
protected void update(float dt) {
stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
handleInput();
}
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:0)
public MenuStateTest(GameStateManager gsm) {
super(gsm);
cam.setToOrtho(false, MyGame.WIDTH, MyGame.HEIGHT);
fitViewport = new FitViewport(MyGame.WIDTH, MyGame.HEIGHT);
stage = new Stage(fitViewport);
Gdx.input.setInputProcessor(stage);
font = new BitmapFont();
skin = new Skin();
buttonAtlas = new TextureAtlas("buttonTest.pack");
skin.addRegions(buttonAtlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("1BBlock");
textButtonStyle.checked = skin.getDrawable("T1BBlock");
button = new TextButton("", textButtonStyle);
stage.addActor(button);
button.setPosition(20, 200);
button2Atlas = new TextureAtlas("Button2Test.pack");
skin.addRegions(button2Atlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("2BBlock");
textButtonStyle.checked = skin.getDrawable("T2BBlock");
button2 = new TextButton("", textButtonStyle);
stage.addActor(button2);
button2.setPosition(175, 200);
button3Atlas = new TextureAtlas("Button3Test.pack");
skin.addRegions(button3Atlas);
textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.getDrawable("3BBlock");
textButtonStyle.checked = skin.getDrawable("T3BBlock");
button3 = new TextButton("", textButtonStyle);
stage.addActor(button3);
button3.setPosition(330, 200);
ButtonGroup buttons = new ButtonGroup(button1, button2, button3);
buttons.setMaxCheckCount(1);
}
@Override
protected void handleInput() {
}
@Override
protected void update(float dt) {
stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}