flash as3 加载多个swf写法,经过测试没有问题

2011-06-07 14:09:54 by 【6yang】, 465 visits, 收藏 | 返回

大部份网上代码加载多个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;

}

分享到:
share

    图片原图

    loading

    loading