2015-04-22 31 views
-1

我目前正在製作一個遊戲,我想要將棋子放置在棋盤上,但不能使用Thread.sleep(),因爲它會中斷遊戲。我該如何做下面的代碼,以便在再次將橢圓形再繪製一段時間之後暫停一段時間。Java Swing Animation without Thread.sleep

 for(int counter = 0 ; counter < getMouseX(); counter++) { 
      g.fillOval(x*70+10, y, 50, 50); 

      //code to wait for 'x' seconds here 

     } 

另外,有沒有什麼辦法可以禁用鼠標點擊,而這個過程呢?

+0

'有沒有什麼辦法可以禁用鼠標點擊,而這個過程呢?'刪除MouseListener。 – camickr

回答

2

做到這一點的一種方法是使用擺動計時器。設置定時器每秒激發X個定時器,然後在那裏執行動畫。

它可能是這個樣子:

final Timer t = new Timer(10, new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     //do your updating of your variables here 
     repaint(); 
     counter++; 
     if(counter >= mouseX){ 
     t.stop(); 
     } 
    } 
}); 

t.start(); 

更多信息可以在定時器教程here被發現。您也可以考慮使用類似「java swing動畫」的搜索功能。