Java 设置演员';将sprite设置为默认值
我的Java 设置演员';将sprite设置为默认值,java,libgdx,Java,Libgdx,我的Actor对象有问题。当我点击按钮Actor时,我希望它切换屏幕。当我执行此操作并返回到最后一个屏幕时,我单击的按钮仍处于悬停状态,直到我再次移动鼠标: 我拥有的代码: // Load Game textButtons[1].addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { // GameState is
Actor
对象有问题。当我点击按钮Actor
时,我希望它切换屏幕
。当我执行此操作并返回到最后一个屏幕时,我单击的按钮仍处于悬停状态,直到我再次移动鼠标:
我拥有的代码:
// Load Game
textButtons[1].addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
// GameState is a subclass of Screen,
// GameStateManager helps me to manage my GameStates.
game.setGameState(GameStateManager.get("screenLoadGame"));
}
});
我试图通过使用keyUp
方法“欺骗”它来修复此问题,并执行以下操作:
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
super.touchUp(event, x, y, pointer, button);
int[] mousePos = { Gdx.input.getX(), Gdx.input.getY() };
Gdx.input.setCursorPosition(0, 0);
stage.act(1);
game.setGameState(GameStateManager.get("screenLoadGame"));
Gdx.input.setCursorPosition(mousePos[0], mousePos[1]);
}
但它不起作用
最后,我希望能够从一个屏幕
切换回主菜单屏幕
,并将该按钮作为其默认精灵。有没有办法设置演员(按钮)的精灵
注意:对于精灵(Json文件中),向上/向下是“开始新游戏”的显示方式。当精灵有灰色背景时(如“加载游戏”)。使用ChangeListener而不是ClickListener。这也将使您的按钮的行为与预期的按钮类似(如果您在释放之前单击并将光标从按钮上移开,它将不会触发) 您可以对许多按钮使用一个ChangeListener,以保持代码整洁
ChangeListener changeListener = new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
if (actor == startNewGameButton){
startNewGame();
} else if (actor == loadGameButton){
loadGame();
} else if (actor == creditsButton){
showCreditsScreen();
}
}
};
然后将其添加到按钮:
startNewGameButton.addListener(changeListener);
现在,我决定在离开
屏幕菜单
时,只处理的部分,当我回到它时,我会重新加载所有内容(它一点也不密集)。