Re: [問題] 關於動畫模擬 使用Thread 程式的架構
※ 引述《pao0111 (理想絕非空想)》之銘言:
: 我的作法也是同樣利用java.util.Timer去負責計時。
: 而呼叫Timer.scheduleAtFixedRate()才會得到固定的計時事件發生間隔。
: 另外也會利用Active Rendering的技巧,直接重繪動畫。而不透過EDT幫
: 我們重繪,效率會比較高。
: 若要使用Active Rendering,需要對欲繪圖的圖形元件(JComponent的子類),
: 呼叫setIgnoreRepaint(false)以避免EDT同時繪製影像。
: 接著呼叫該元件的getGraphics()取得Graphics物件,往後的繪圖執行緒即可不斷
: 使用此Graphics重繪影像。
使用 Active Rendering 的做法,每次要繪製圖形到元件時,都從元件取得 Graphics
object 來作繪圖,做完就 dispose 掉 Graphics object 會比較妥當。特別是在你的
動畫元件的 size 會變更(特別是變大),或是元件的位置會變動時。
你從一個元件取得 Graphics object 後,等到元件變大,透過先前取得的 Graphics
object 來繪製圖形會無法 cover 元件變大後的整個區域。元件變更位置後透過先前
取得的 Graphics object 來繪製圖形,會出現在元件舊位置。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.129.70
※ 編輯: sbrhsieh 來自: 218.173.129.70 (04/11 02:11)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):