【发布时间】:2015-05-14 10:24:16
【问题描述】:
在pause 之后我无法恢复我的游戏。我正在使用SurfaceView,这是代码中最重要的部分:
void pause() {
if (!pause) {
gameLoopThread.setRunning(false);
pause = !pause;
System.out.println("pause");
}
else {
gameLoopThread.setRunning(true);
System.out.println("end pause");
pause = !pause;
}
}
public GameView(Context context) {
super(context);
gameLoopThread = new GameLoopThread(this);
getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
gameLoopThread.setRunning(false);
while (retry) {
try {
gameLoopThread.join();
retry = false;
} catch (InterruptedException e) {}
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
//createSprites();
gameLoopThread.setRunning(true);
gameLoopThread.start();
thread1.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height)
{
}
当我第一次使用pause 时,游戏正在停止,但是当我第二次尝试使用pause 恢复游戏时它不起作用,但我在日志中打印了“结束暂停”。
【问题讨论】:
-
我想 GameLoopThread 是继承自 Thread 的自定义类。你能告诉我们这个类中用于暂停的代码吗?
-
您是否查看了堆栈跟踪以查看线程状态?
标签: java android surfaceview resume game-loop