作者sbrhsieh (sbr)
看板java
标题Re: [问题] 关於动画模拟 使用Thread 程式的架构
时间Sat Apr 11 01:45:43 2009
※ 引述《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)