大部份网上代码加载多个swf总是有问题,
于是我就自己琢磨;
虽然,写的不是很理想,但对于初学者来说,这代码让你受益一生;
学吧!
源码:
stop();
var swfArray:Array=new Array("mc01.swf","mc02.swf","mc03.swf");
var arrayIndex:int=0;
var s:Loader =new Loader();//加载器1用来加载影片1
var g;//这个变量用来使加载进的影片能够代码控制;
var k:int=1;//这变量控制要加载的是哪个影片
var ww:Boolean=true;//开关控制;
addEventListener(Event.ENTER_FRAME ,iui);//增加逐帧侦听器
function iui(e:Event ) {
pan(ww,k);//逐帧侦听器每帧执行pan方法;开关变量和加载数
}
function loadSWF():void {//加载swf文件
s.load(new URLRequest(swfArray[arrayIndex]));
box.addChild(s);
arrayIndex++;
s.contentLoaderInfo.addEventListener(Event.COMPLETE, bn);
if(arrayIndex >swfArray.length-1) arrayIndex = 0;
}
function pan(ee:Boolean ,ff:int) {//判断方法有二参数,
if (ee) {//如果开关打开;
switch (ff) {//根据数目加载不同影片
case 1 ://数目为1时加载影片1,并显示和建加载完成时的侦听
//trace(s3);
loadSWF();
ww=false;//开关关闭;
//ee=false;
k++;//数目加1
g=null;
break;
case 2 ://数目为2时加载影片2,删除影片1
loadSWF();
ww=false;
k++;
g=null;
this.stage.frameRate=126;
break;
case 3 ://数目为2时加载影片2,删除影片1
loadSWF();
ww=false;
k++;
g=null;
this.stage.frameRate=48;
break;
//
case 4 ://数目为3时删除掉逐帧事件,并删除加载的最后一个影片
box.removeChild(s);
removeEventListener(Event.ENTER_FRAME ,iui);
this["root"].gotoAndPlay(1);
break;
}
} else {//如果开关是关的时候,
if (g!=null&&g.currentFrame==g.totalFrames) {//加载进的影片如果播放完就打开开关,能使加载另个影片
ww=true;
}
}
}
function bn(e:Event ) {/*这是加载完毕每个影片时的方法,变量g等于这个加载的影片,使加载进的影片可以控制,因为As3中不能直接控制加载影片。这是变通方法,也是国际方法*/
g=e.target.content;
var i_x = (stage.stageWidth - g.width)/2;
var i_y = (stage.stageHeight - g.height)/2;
g.x=i_x;
g.y=i_y;
}
loading