利用Java Applet編程實現動畫特技

來源:互聯網
上載者:User

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() 方法,使該方法不會清除整個畫面,只是消除必要的部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.