0
我在pause
後遇到了恢復遊戲的問題。我使用SurfaceView
,這裏是代碼的最重要的部分:如何暫停和恢復GameLoop?
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是一個從線程遺留下來的自定義類。你能告訴我們這個班上用於暫停的代碼嗎? – Nic007
您是否看過堆棧跟蹤以查看線程狀態? – fadden