Flash AS 教程 影片剪辑 加载swf文件 联系客服

发布时间 : 星期五 文章Flash AS 教程 影片剪辑 加载swf文件更新完毕开始阅读8b864ac2b90d6c85ed3ac68f

Flash AS 教程 影片剪辑 加载swf文件 第二节 加载和卸载swf文件

上一节中,我们已经能创建MC,本节我们将介绍加载外部swf文件的方法。 loadMovie函数及MC的loadMovie()方法:

使用 loadMovie() 函数可以在播放原始 SWF 文件时,将 SWF、JPEG、GIF 或 PNG 文件加载到 Flash Player 中的影片剪辑中。加载的图像或 SWF 文件的左上角与目标影片剪辑的注册点对齐。

格式:loadMovie(“要加载的swf文件或图片“,目标影片剪辑); 要加载的swf文件或图片可以来源于网络,书写格式为:http://.... 可以来源于本地硬盘上的文件系统,书写格式为:file:///.......

如果要加载的swf文件或图片与fla文件在同一目录下,则直接写文件名。

目标影片剪辑可以是任何影片剪辑,也可以是主场景,加载后,目标影片剪辑将被替换成加载的文件。

例1:加载一个网络上的swf文件sub.swf到创建的MC中:

this.createEmptyMovieClip(\

loadMovie(\

例2:加载一个本地的swf文件sub.swf到主舞台:

loadMovie(\

例3:加载一个相同目录下的图片picture.jpg到创建的MC中:

this.createEmptyMovieClip(\ loadMovie(\

以上是loadMovie函数的写法,而MC的loadMovie()方法也一样,只写法不同,如:this.createEmptyMovieClip(\ picture_mc.loadMovie(\loadMovieNum 函数

在播放原始 SWF 文件时,将 SWF、JPEG、GIF 或 PNG 文件加载到一个级别中。用法跟loadMovie一样,只是它不是指明目标影片剪辑,而加载到一个深度上。比如要加载相同目录下的swf文件myflash.swf到深度为2的级别中: loadMovieNum(“myflash.swf”,2);

要注意的是,上一节我们介绍了,当深度相同时,新加载的对象会覆盖原来的对象。我们也以用下面一句来加载外部swf文件:

loadMovieNum(“myflash.swf”,this.getNextHighestDepth()); [next]

MovieClipLoader类

此类用于实现在 SWF、JPEG、GIF 和 PNG 文件正被加载到影片剪辑中时提供状态信息的侦听器回调。也就是说用这类加载swf文件,可以在加载过程中进行控制,如观察加载进度等。要使用MovieClipLoader类就应首先用构造函数创建一个MovieClipLoader类的实例才能操作其方法,事件,实现加载功能。如:

var mcLoader:MovieClipLoader = new MovieClipLoader();

loadClip方法:该方法的作用和用法与loadMovie()是一样的。如: this.createEmptyMovieClip(\

var mcLoader:MovieClipLoader = new MovieClipLoader(); mcLoader.loadClip(\);

上面说到,用本类加载外部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(“外部文件地址”,目标影片剪辑); [next]

下面介绍MovieClipLoader类的几个方法 loadClip方法:在播放原始影片时,将 SWF、JPEG、渐进式 JPEG、非动画 GIF 或 PNG 文件加载到 Flash Player 中的影片剪辑中。

addListener(侦听对象)方法:注册一个对象,以便在调用 MovieClipLoader 事件处理函数时接收通知。

getProgress(target: Object)方法:返回正在通过使用 MovieClipLoader.loadClip()

加载的文件的已加载字节数和总字节数;返回一个具有以下两个整数属性的对象:bytesLoaded 和 bytesTotal。

removeListener(侦听对象)方法:删除在调用 MovieClipLoader 事件处理函数时用来接收通知的侦听器。

unloadClip(target: Object)方法:删除通过使用 MovieClipLoader.loadClip() 加载的影片剪辑。 [next]

下面通过一个练习来加深理解本节课所介绍的内容,主要运用MovieClipLoader类来加载外部文件加载过程中,用进度条来显示加载进度。本节的练习请保存原文件,待下一节控制时间轴后,将在本练习的基础上,完成一个播放器。

一、新建flash文档,然后在第一层画一个播放器的外形,这个我不作介绍,我画的如下图,你完全可以画得更好看一些。这里要说一说中间的播放屏幕(黑的那块)的大小问题。Flash文档默认的大小是550x400,那么这个播放屏幕也应按这个比例来画,它的大小是文档大小的80%,因此,宽为:550x0.8=440,高为400x0.8=320.将这个播入屏幕水平居中,尽量往上放,将下面多留一些地盘,以后有用。然后用变形工具点中它,将注册点移到左上角,打开属性面板,记录下它的x,y坐标备用。图层上锁。

二、新插入一图层,按下图位置放一个静态文本,内容为:“文件地址:”;再放一个输入文本,在属性面板实例名称为:url_txt.新建一按钮元件,标签为:“打开”,属性面板实例名称为:load_btn.将按钮放输入文本右边。

三、新建一MC,取名loading,用矩形工具,禁止笔触,绿色填充,画一个300x5的矩形。然后转换成MC。双击它进新的MC编辑窗口,将矩形条垂直居中,左对齐。打开属性面板,为实例名称取名为:“http://www.zycaihui.com loadt_mc”.回到loading元件编辑窗口,将矩形元件垂直居中,左对齐。在矩形元件的上面放一静态文本,内容为:“正在加载文件,请稍候?”.在库中右击loading元件,点连接,在“为ActionScript导出“前打钩。在标识标中输入:loading,实际上那里本来就有了,不用输哈,确定。 [next]

四、好了,接下来写代码。新建一层,取名为“action”.

打开帧到作面板,输入如下语句: load_btn.onRelease =function(){

attachMovie(\

loading_mc._x=80;

loading_mc._y=215;

loading_mc.loadt_mc._xscale=0; var swfurl = url_txt.text;

var type = swfurl.substr(-3,3);

createEmptyMovieClip(\

var mcLoader:MovieClipLoader = new MovieClipLoader(); var listener:Object = new Object(); listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {

loading_mc.loadt_mc._xscale=Math.floor((bytesLoaded/bytesTotal)*100); }

listener.onLoadInit = function(swf_mc){

loading_mc.removeMovieClip();

swf_mc._x=60;

swf_mc._y=8;

if(type == \

swf_mc._xscale=swf_mc._yscale=80;

} else {

while((swf_mc._width>440)||(swf_mc._height>320)){

swf_mc._xscale -=1;

swf_mc._yscale -=1; } } }

mcLoader.addListener(listener); mcLoader.loadClip(swfurl,swf_mc); }

测试影片,在文本框中输入外部swf或图片的地址,点击打开,外部文件将加载到播放窗口