top
Loading...
JavaApplet動畫設計
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。(首月免費)

Applet是在瀏覽器中運行的小程序,Java也是從Applet開始風靡世界的。通過編寫這個Applet,我們可以學習到如下知識:

1. Applet及JApplet中的主要接口

2. 圖像的裝載及MediaTracker的使用

3. 線程的使用及多個線程直接的通訊

4. Thread.join()方法的使用

5. volatile關鍵字的使用

首先看看運行效果:點擊運行

動畫的主要部分是一個Applet,從codebase中讀取一組圖片文件,然后每隔1秒輪換顯示一張。代碼如下:

import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
public class Animate extends JApplet
{
//圖片數量
private static final int NUM_OF_PIC = 4;
int count;
Image pics[];
TimerThread timer;
public void init()
{
count = 1;
pics = new Image[NUM_OF_PIC];
MediaTracker tracker = new MediaTracker(this);
for(int i = 0; i<NUM_OF_PIC; i++)
{
//將圖片按照0,1,...,NUM_OF_PIC -1,放置在目錄中,格式為.jpg
pics[i] = getImage(getCodeBase(), new Integer(i).toString()+".jpg");
tracker.addImage(pics[i], 0);
}
tracker.checkAll(true);
}
public void start()
{
timer = new TimerThread(this, 1000);
timer.start();
}
public void stop()
{
timer.shouldRun = false;
try
{
timer.join();
//等待timer線程退出
}
catch (InterruptedException e){};
}
public void paint(Graphics g)
{
g.drawImage(pics[count++], 0, 0, null);
if(count == NUM_OF_PIC) count = 0;
}
}

動畫的控制由一個專門的線程TimerThread進行處理,

import java.awt.Component;
public class TimerThread extends Thread
{
Component comp;
int timediff;
// shouldRun聲明為volatile
volatileboolean shouldRun;
public TimerThread(Component comp, int timediff)
{
super("TimerThread(" + timediff + " millseconds");
this.comp = comp;
this.timediff = timediff;
shouldRun = true;
}
public void run()
{
while(shouldRun)
{
try
{
comp.repaint();
sleep(timediff);
}
catch (Exception e){}
}
}
}
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗