推 howdou:感謝!!! 04/09 23:37
我的作法也是同樣利用java.util.Timer去負責計時。
而呼叫Timer.scheduleAtFixedRate()才會得到固定的計時事件發生間隔。
另外也會利用Active Rendering的技巧,直接重繪動畫。而不透過EDT幫
我們重繪,效率會比較高。
若要使用Active Rendering,需要對欲繪圖的圖形元件(JComponent的子類),
呼叫setIgnoreRepaint(false)以避免EDT同時繪製影像。
接著呼叫該元件的getGraphics()取得Graphics物件,往後的繪圖執行緒即可不斷
使用此Graphics重繪影像。
但要注意的是,getGraphics()方法需要此元件已經顯示於螢幕上才能取得物件。
否則回傳的會是null。
我測試過FPS大致都跟設定的值蠻接近的,提供你參考參考 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.62.63