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 suclearcase/" target="_blank" >ccessfully.
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是一样的;