Flash as入门(8):加载和卸载swf文件(2)
MovieClipLoader类
此类用于实现在 SWF、JPEG、GIF 和 PNG 文件正被加载到影片剪辑中时提供状态信息的侦听器回调。也就是说用这类加载swf文件,可以在加载过程中进行控制,如观察加载进度等。要使用MovieClipLoader类就应首先用构造函数创建一个MovieClipLoader类的实例才能操作其方法,事件,实现加载功能。如:
var mcLoader:MovieClipLoader = new MovieClipLoader();
loadClip方法:该方法的作用和用法与loadMovie()是一样的。如:
this.createEmptyMovieClip("picture_mc", 1);
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip("picture.jpg",picture_mc);
上面说到,用本类加载外部swf文件或图片可以在加载过程中加以操作,主要是通过几个事件的调用来实现:onLoadStart事件:在下载的文件的第一个字节写入硬盘后,调用。
格式: onLoadStart = function([target_mc: MovieClip]) {}
其中的target_mc为要加载外部影片的目标MC。
onLoadComplete事件:当加载的文件完全下载时调用。
格式:onLoadComplete = function([target_mc: MovieClip]) {}
onLoadInit事件:当执行加载的剪辑的第一帧上的动作时调用。
在调用此侦听器后,您可以设置属性、使用方法,还可以与加载的影片交互。
格式:onLoadInit = function([target_mc: MovieClip]) {}了解 MovieClipLoader.onLoadComplete和 MovieClipLoader.onLoadInit之间的差异非常重要。onLoadComplete事件在加载 SWF、JPEG、GIF 或 PNG 文件之后但在应用程序初始化之前被调用。此时,无法访问已加载的影片剪辑的方法和属性,因此您无法调用函数、移动到特定帧,等等。在多数情况下,最好改为使用 onLoadInit事件,它在内容已加载并完全初始化后被调用。
onLoadProgress事件:在加载过程中(即在 MovieClipLoader.onLoadStart
和 MovieClipLoader.onLoadComplete
之间时),每当正加载的内容写入硬盘时调用。
格式:onLoadProgress = function([target_mc: MovieClip], loadedBytes: Number, totalBytes: Number) {}
loadedBytes为已经加载的字节数。totalBytes为要加载的swf的总的字节数。如果在测试模式中,您试图对驻留在硬盘上的本地文件使用 onLoadProgress,则它将不能正常工作,这是因为在测试模式中,Flash Player 会将本地文件作为一个整体加载。
onLoadError事件:加载的文件未能加载时调用。出于各种原因,会调用此侦听器;例如服务器关闭、找不到文件或发生安全侵犯。
上述事件的调用方法我给你整成一个公式的模式,直接套用就行了。
MovieClipLoader类事件调用公式:
//首先创建一个MovieClipLoader对象
var mcLoader:MovieClipLoader = new MovieClipLoader();//mcLoader为自已取的名称
//然后创建一个侦听对象
var listener:Object = new Object();//listener为自已取的名称
//调用下列事件之一或多个
listener.onLoadStart = function(target_mc:MovieClip) {}
listener.onLoadComplete = function([target_mc: MovieClip]) {}
listener.onLoadInit = function([target_mc: MovieClip]) {}
listener.onLoadProgress = function([target_mc: MovieClip],
loadedBytes: Number, totalBytes: Number) {}
//MovieClipLoader对象调用侦听对象
mcLoader.addListener(listener);
//MovieClipLoader对象加载外部swf或图片
mcLoader.loadClip(“外部文件地址”,目标影片剪辑);