Flash as入门(8):加载和卸载swf文件

http://www.webjx.com/  2009-01-24 09:53:06  来源:中国教程网 sanbos 

Webjx核心提示:本例继续讲解AS的基础知识,今天我们来学习Flash AS入门系列教程第七课:影片剪辑第二节加载swf文件,对Flash的AS编程有兴趣的朋友可以到论坛与作者交流.

代码分析:

代码全部放在按钮的点击事件中:
load_btn.onRelease =function(){
首先将进度条从库中加载到舞台上,并设置它的位置,使它处于播入屏幕中间,因为现在还没有开始下载,所以设置进度条的长度为0.
attachMovie("loading","loading_mc",getNextHighestDepth());

loading_mc._x=80;

loading_mc._y=215;

loading_mc.loadt_mc._xscale=0;
接下来,声明一个变量swfurl来存放用户在地址文本中输入的外部文件地址。用type来存放地址的最后三个字符,用以判断加载的是swf还是图片。
var swfurl = url_txt.text;
var type = swfurl.substr(-3,3);
创建一个空的MC用来加载外部文件
createEmptyMovieClip("swf_mc", 1);
创建一个MovieClipLoader对象用于加载外部文件,创建一个侦听对象用于调用MovieClipLoader的事件。
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
调用onLoadProgress事件,即在下载过程中,读取已下载的字节数和总的字节数,并用它们的比值,设置进度条的长度。
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
loading_mc.loadt_mc._xscale=Math.floor((bytesLoaded/bytesTotal)*100);

}
调用onLoadInit在加载完成后,删除进度条。并设置加载的文件的位置和大小,使之适应播入屏幕的大小。上面我们记录的播放屏幕的左上角坐标现在有用了,将加载的文件的坐标设为记录的值。文件的大小,首先判定加载的是swf文件还是图片。为什么在判断呢?这是因为加载swf文件后,目标MC的_width和_hight就失灵了,因而就只能用_xscaleswf_,_yscale 来控制,很显然这不科学的,因为加载的swf大小不可能都一样,按比例缩放无法达到精确的尽寸。所以我们只能把要加载的swf文件看成550x400的大小来缩小到80%。而图片则可用宽高属性来设置,所以分开来,整精确一个算一个。按上面存的用户输入的地址的最后三个字符,如果是swf那么就是加载 swf文件了,就用_xscaleswf_,_yscale来控制。如果不是则是加载图片那么就可用宽高属性来判断加载的图片是否大于播放屏幕,如果大了,则调整_xscaleswf_,_yscale属性,使之减小。为什么还是调整_xscaleswf_,_yscale呢?这是为了,使保持宽高比例,以免变形。
listener.onLoadInit = function(swf_mc){

loading_mc.removeMovieClip();

swf_mc._x=60;

swf_mc._y=8;

if(type == "swf"){

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;

}

}

}
最后MovieClipLoader对象侦听侦听对象,加载影片。
mcLoader.addListener(listener);
mcLoader.loadClip(swfurl,swf_mc);

 

作业:制作这个播放器

共6页: 上一页 [1] [2] [3] [4] [5] 6 下一页
更多