Java 不僅提供了對圖形、映像的支援,還允許使用者實現連續的映像播放,即動畫技術。Java 動畫的實現,首先用Java.awt 包中的 Graphics 類的drawImage()方法在螢幕上畫出映像,然後通過定義一個線程,讓該線程睡眠一段時間,然後再切換成另外一幅映像;如此迴圈,在螢幕上畫出一系列的幀來造成運動的感覺,從而達到顯示動畫的目的。
為了每秒鐘多次更新螢幕,必須建立一個線程來實現動畫的迴圈,這個迴圈要跟蹤當前幀並響應周期性的螢幕更新要求;實現線程的方法有兩種,可以建立一個類Thread 的衍生類別,或附和在一個Runnable 的介面上。
* 動畫技巧
在編寫動畫過程時,遇到最常見的問題是螢幕會出現閃爍現象。閃爍有兩個原因:一是繪製每一幀花費的時間太長(因為重繪時要求的計算量大);二是在每次調用Pain()前,Java 會用背景顏色重畫整個畫面,當在進行下一幀的計算時,使用者看到的是背景。
有兩種方法可以明顯地減弱閃爍:重載 update()或使用雙緩衝。
(1) 重載 update()
當AWT接收到一個applet的重繪請求時,它就調用applet的 update(),預設地,update() 清除applet的背景,然後調用 paint()。重載 update(),將以前在paint()中的繪圖程式碼封裝含在update()中,從而避免每次重繪時將整個地區清除。下面是 update()方法的原始程式碼:
public void update(Graphics g)
{
//首先用背景色來繪製整個畫面
g.setColor(getBackGround());
g.fillRect(0,0,width,height);
//接著設定前景色彩為繪製映像的顏色,然後調用paint()方法
g.setColor(getForeGround());
paint(g);
}
所以要消除畫面閃爍就一定要改寫 update() 方法,使該方法不會清除整個畫面,只是消除必要的部分。