我已經搜索過並遇到過不同類型的遊戲循環。我一直使用java中不同類型的遊戲循環
Screen.java擴展了JFrame,同時也添加了所有通常位於兩個不同的.java一個用於鍵盤的偵聽器,一個用於鼠標。
public void Draw(Graphics g){
Graphics2D g2 = (Graphics2D)g;
//Everything that I render at the screen goes here, or I pass along g2 to them so they can be rendered. Such as level.draw(g2);
repaint();
}
@Override
public void paint(Graphics g){
Image offScreenBuffer = createImage(getWidth(), getHeight());
Draw(offScreenBuffer.getGraphics());
g.drawImage(offScreenBuffer, 0, 0, null);
}
然後在主我有睡眠
@Override
public void run(){
while(true){
//all update code goes here.
try{ Thread.sleep(1); }catch(Exception e){}
}
}
正常Runnable的循環,但我看到有人用定時器,信號量,和TimerTask來創建一個運行循環,採取的護理建議輸入,更新,最後重新排序。所以我覺得哪種方法最好?因爲它接縫,如果我使用TimerTask的創建循環,渲染遊戲它接縫,我需要鎖定它到一個特定的FPS。
對於我所看到和理解的,我可以使用Timer和TimerTask來安排遊戲更新。但是,我不知道如何改變我的代碼,或者我在這裏錯過了什麼?
我已經投票決定關閉這個問題,因爲它會吸引自以爲是的回答和辯論。大多數「*什麼是最好的X *?」問題不適合Stack Overflow。 –
儘管你的'paint'方法令人擔憂,除了確保你更新屏幕與EDT正確同步之外,我會說你的'Runnable'方法可能是最明智的,只要你正確地考慮到嘗試保持幀速率一致... – MadProgrammer
以及我現在有更新的塗料方法,然後我可以。我不能說我的更新方法,因爲我使用Thread.sleep() – Yemto