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是一样的;