Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置演员';将sprite设置为默认值_Java_Libgdx - Fatal编程技术网

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);

现在,我决定在离开
屏幕菜单
时,只处理
部分,当我回到它时,我会重新加载所有内容(它一点也不密集)。