java - LibGDX 游戏暂停状态 : Animation flicker/bug

标签 java android libgdx state pause

我正在尝试为我的后续游戏实现暂停选项。通过按下后退按钮,我的游戏应该进入 updatePause() 方法。但它会重复渲染最新的 2-3 帧。让它看起来像在“闪烁”。

为了避免这种情况,我添加了(在评论中)非连续渲染以防止闪烁。但是后来我面临的问题是多次按下后退按钮将渲染另一帧。 (其中一个闪烁的框架)。简而言之,这是我的代码结构:

public class GameScreen implements Screen {
    private static final int GAME_RUNNING = 0;
    private static final int GAME_PAUSED = 1;
    private static final int GAME_OVER = 2;
    private static final int GAME_LEVEL_END = 3;
    private int gameState;

    private GdxGame game;

    //create()
    public GameScreen(final GdxGame game) {
        //create all the stuff
    }

    @Override
    public void render(float deltaTime) {
        switch (gameState) {
            case GAME_RUNNING:
                updateRunning(deltaTime);
                break;
            case GAME_PAUSED:
                updatePause(deltaTime);
                break;
            case GAME_OVER:
                updateGameOver();
                break;
        }
    }

    public void updateRunning(float deltaTime) {
        //draw section
        if (gameState == GAME_RUNNING) {
            game.batch.begin();
            //Draw some stuff
            game.batch.end();

            //move section
            handleInput();
        }
    }

    public void updatePause(float deltaTime) {
        //Gdx.graphics.setContinuousRendering(false);
        //resume
        if (Gdx.input.isTouched()) {
            gameState = GAME_RUNNING;
            //Gdx.graphics.setContinuousRendering(true);
            return;
        }
    }

    private void handleInput() {
        //catch back button
        Gdx.input.setCatchBackKey(true);
        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)) {
            gameState = GAME_PAUSED;
            return;
        }
    }
}

有什么防止闪烁的技巧吗?

最佳答案

render() 方法应该在屏幕上绘制一些东西。如果没有,则后台缓冲区的内容将是未定义的(因此可能包含前一帧)并且您会看到此闪烁。

禁用连续渲染听起来是个好方法。或者,即使游戏暂停也继续绘制。

关于java - LibGDX 游戏暂停状态 : Animation flicker/bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080673/

相关文章:

java - 如何加粗 AlertDialog 中使用的 CharSequence 中的一项?

java - 如何在NamedQuery中使用正确的HQL

java - eclipse : Add jar file and not depend on local machine path

java - 使用 WebLogic 放置 Web 应用程序的 Jar

java - 如何在抽屉导航中提供 SettingsActivity?

javascript - jQueryMobile 不会在 Android 上加载 Phonegap

android - 如何从网络下载文件并将其保存在设备上

java - 如何在 libgdx 上创建透明按钮

android - Admob libgdx 插页式广告

java - 使用 ADB 时 Android studio "File not found",桌面版有效