2014-05-14 42 views
-1

我正在用java製作遊戲,並且正在嘗試製作暫停菜單。此刻我正在檢查正在按下的esc按鈕並運行我的菜單JFrame。問題是我的遊戲一直在後臺運行。如何在菜單打開時暫停遊戲線程?單獨的JFrame打開時暫停遊戲線程

代碼是遊戲的主要循環

public void run() { 
    try { 
     init(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    long lastTime = System.nanoTime(); 
    final double amountOfTicks = 60D; 
    double ns = 1000000000/amountOfTicks; 
    double delta = 0; 

    while(running){ 
     long now = System.nanoTime(); 
     delta +=(now - lastTime)/ns; 
     lastTime = now; 
     if (delta >= 1) { 
      tick(); 
      delta--; 
     } 
     render(); 
    } 
    stop(); 
} 

代碼檢查暫停菜單

public void tick() { 

    if (up) { 

     playerUp = true; 
     playerDown = false; 
     playerLeft = false; 
     playerRight = false; 
     y -= SPEED; 
     moving = true; 
    } 
    if (dn) { 
     playerDown = true; 
     playerLeft = false; 
     playerRight = false; 
     playerUp = false; 
     y += SPEED; 
     moving = true; 
    } 
    if (lt) { 

     playerLeft = true; 
     playerRight = false; 
     playerDown = false; 
     playerUp = false; 
     x -= SPEED; 
     moving = true; 
    } 
    if (rt) { 
     playerRight = true; 
     playerLeft = false; 
     playerUp = false; 
     playerDown = false; 
     x += SPEED; 
     moving = true; 
    } 


    if (esc) { 
     pauseMenu.main(null); 
    } 
+1

請分享示例代碼。 – Braj

+0

也許看:http://stackoverflow.com/questions/8299010/how-to-pause-and-resume-a-simple-game-in-java爲一個小樣本...如果不幫助顯示一些你的代碼 – pL4Gu33

+0

編輯包含代碼的問題 –

回答

0

一對夫婦提示:

tick()是你正在運行的遊戲的代碼,但它不該不會決定何時打勾 - 因爲如果它暫停了,它是如何取消暫停的呢?

您已經限制您致電tick()的次數。從本質上講,當遊戲變爲「暫停」時,您希望將其限制得更多。