【发布时间】:2014-03-10 18:08:39
【问题描述】:
我目前正在实现一个 android 游戏,但在暂停和恢复线程时遇到了问题。 这是`package com.andromeda.bubbleshooter;
导入 android.graphics.Canvas; 导入android.view.SurfaceHolder;
公共类 MainThread 扩展线程 {
// flag to hold game state
private boolean running;
public static boolean stop;
private SurfaceHolder surfaceHolder;
public GameLoop gamePanel;
public MainThread(SurfaceHolder surfaceHolder, GameLoop gamePanel) {
super();
this.surfaceHolder = surfaceHolder;
this.gamePanel = gamePanel;
}
public void setRunning(boolean running) {
this.running = running;
}
@Override
public void run() {
Canvas canvas = null;
while (running) {
// update game state
// render state to the screen
try {
canvas = this.surfaceHolder.lockCanvas();
synchronized (surfaceHolder) {
// if (running)
gamePanel.draw(canvas);
}
} finally {
// in case of an exception the surface is not left in
// an inconsistent state
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
} // end finally
}
}
} `
在扩展surfaceView的游戏循环类中,我在构造函数中初始化线程,单击暂停按钮时调用.setRunning(false),恢复时调用.setRunning(true)。暂停游戏时没问题,但是当点击返回按钮恢复时,没有任何变化并且游戏被冻结。
【问题讨论】:
标签: java android surfaceview