MediaTracker類
ImageObserver可以有效地監視單個圖像,但是面對多個圖像我們用
MediaTracker類;
使用非常簡單:
addImage()來把關心的所有圖像都加到MediaTracker控制下:addImage(Image image, int id)
我們所給的id是給每個圖像一個辨別;實際上是用一組ID來把不同的圖像組成一個圖像組;
在使用圖像之前可以用checkID()來檢視圖像是否已經準備好;
一般是當我們調用drawImage()的時候,才會開始加載圖像;現在我們有另外的選擇:
我們可以在drawImage()之前調用waitForID()來強制加載圖像,這樣的話,以後有需要時
再drawImage()一點都不遲;
//MeidaTracker在Image被使用前,而ImageObserver的調用發生在Image被使用後;
構造器的說明:
public MediaTracker(Component comp)
comp是我們希望圖像顯示在其上的元件,通常Panel,Applet,Canvas;
可以經常在定義部件的子類内部調用這個構造器,是以是this;
addImage()的參數ID決定了圖像的加載順序;
addImage()方法并不加載圖像,checkID(ID),checkAll()也都不加載圖像,隻是檢視圖像的狀态;
當調用checkID(ID,true),checkAll(true)的時候,如果傳回false,會加載未完成加載的圖像;
還會加載圖像的方法是waitForID()和wairForAll()方法:
調用這四個方法的時候,開始加載圖像,調用線程将被阻塞等待圖像的加載;
如果不希望程式阻塞,我們一般可以在獨立線程内部調用這些方法;
錯誤跟蹤:
isErrorAny(),is ErrorID(int id)用來傳回是否有錯;
Object[] getErrorAnry(),Object[] getErrorID(int id)用來傳回錯誤的對象;
媒體狀态:四個常數來訓示:
static int ABORTED
Flag indicating that the downloading of media was aborted.
static int COMPLETE
Flag indicating that the downloading of media was completed successfully.
static int ERRORED
Flag indicating that the downloading of media encountered an error.
static int LOADING
Flag indicating that media is currently being loaded.
AppletContext類
就象Servlet有個Context一樣,Applet也有代表運作此applet的Web浏覽器或者
applet閱讀器的字段AppletContext類;
Applet的getAudioClip()和getImage()方法隻是調用了applet的AppletContext中的相應方法;
可以這樣了解,AppletContext其實是Applet中相應方法的鏡象;
showDocument(URL url)是個很有用的方法,可以直接打開新的url連結到的頁面;
showDocument(URL url,String frameName) frameName的作用和HTML中的target是一樣的;