2016-04-26 64 views
0

我正在設計一款遊戲,您可以在屏幕邊緣切換到類似於第一款塞爾達遊戲的相同地圖的新面板。哪個方法會更有效率或更有效率,使用repaint()運行線程還是使用javax.swing.Timer並調用super.paintComponet更好?互動背景

+0

在我看來,兩者都不是一個好的解決方案。在'actionPerformed'內使用'javax.swing.Timer'調用'repaint()',而不是'super.paintComponent()'。但是定時器不應該在'paintComponent'方法內部啓動,如果這就是你的建議。 –

+0

謝謝,我一直在研究最好的方法,人們已經有幾種方法提出。 –

+0

但是計時器到底是什麼?你是否想要爲面板過渡做一個動畫?請考慮發佈[mcve]的具體幫助,至少我不完全確定你想要達到的目標。 –

回答

1

通常對於簡單的動畫,你可以使用javax.swing.Timer但看起來你正在進入一個更復雜的遊戲。如果您繼續使用swing.Timer,並且您的代碼執行速度不夠快,則可能會影響組件的繪製,導致您的用戶界面無法響應。

您可以通過工作線程調用Thread.sleep(delay)來根據想要的幀率構建遊戲循環和渲染,請記住不要在事件派發線程中運行它,否則您的UI也將變得無法響應。