我有幾個問題,我很難找到有關如何解決的好信息。首先,我有一個遊戲結束屏幕,它會在什麼時候顯示。我試圖使用將Threads運行設置爲false,以便它停止運行,然後當觸摸屏幕將其設置爲true時,但它不會使屏幕重新運行。此外,我將需要能夠實際清除所有時間,以便重置它(這是一個很好的方法)。這同樣我需要我假設爲暫停和簡歷。如果運行未設置爲false,則即使sleep()以較慢的增量顯示也會繼續運行。這是我的線索,看看你是否注意到我能做些什麼。遊戲結束和暫停/繼續照顧線程
public class GameLoopThread extends Thread {
private GameView view;
public static boolean running = false;
static final long FPS = 10;
public GameLoopThread(GameView view) {
this.view = view;
}
public void setRunning(boolean run) {
running = run;
}
@Override
public void run() {
long ticksPS = 1000/FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS-(System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
} catch (Exception e) {}
}
}
}
現在,這部分導致了暫停/繼續一個大問題。我有一個handler.postDelayed處理我的精靈的產卵。基本上,當屏幕顯示暫停(因爲它看起來像是如果我使用睡眠),問題是處理程序(它在GameView中)看起來像時間仍在運行。有沒有辦法將它重置爲零...最好在兩個類的遊戲結束,並暫停處理程序,以及在暫停期間?謝謝
編輯:截至目前我正試圖使用選項菜單,使其重新開放運行遊戲的活動,使新遊戲。它似乎重置它,但它凍結了過程中。任何人都知道我可以解決這個問題?
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.newgame:
GameView.gameState=0;
GameLoopThread.running=true;
Intent game = new Intent(PlayGame.this, PlayGame.class);
startActivity(game);
break;
case R.id.pause: Toast.makeText(this, "You pressed Pause", Toast.LENGTH_LONG).show();
break;
case R.id.quit: Toast.makeText(this, "You pressed Quit", Toast.LENGTH_LONG).show();
break;
}
return true;
}
那是我的選項菜單。