我正在尝试为我的游戏实现暂停选项。按下后退按钮后,我的游戏应该进入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;
}
}
}
有什么技巧可以防止闪烁?