使用loader加载swf

使用loader加载swf的时候会遇到很多的问题,但是采用下面的方法进行加载去没有问题,首先是使用URLLoader加载swf文件成为ByteArray数据,然后再使用Loader加载ByteArray获得swf文件,下面的是测试的代码:


package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.EventPhase;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;

public class LoadSwf extends Sprite
{
private var name_array:Array=["swf/a.swf","swf/b.swf","swf/c.swf","swf/d.swf"];//保存SWF名的数组
private var p:uint =new uint;//记住当前播放的是数组中的第几个SWF(指针从0开始)
private var play_mc:MovieClip =new MovieClip;//当前播放的SWF
private var swf_loader:Loader=new Loader;
private var swf_urlloader:URLLoader =new URLLoader;
private var swf_urlrequest:URLRequest =new URLRequest;

public function LoadSwf()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

init();
}

private function init():void
{
swf_urlloader.dataFormat =URLLoaderDataFormat.BINARY ;

play_mc.x = 0;
play_mc.y = 50;
addChild(play_mc);

swfLoad();
}

private function swfLoad():void
{
p=p<0?(name_array.length -1):p%=name_array.length ;
try {
swf_urlrequest.url =name_array[p];
swf_urlloader.load(swf_urlrequest);
swf_urlloader.addEventListener(Event.COMPLETE ,binaryLoadComplete);

trace("loader : "+name_array[p]);
} catch (_err:Error) {
trace(_err);
}
}

private function binaryLoadComplete(_evt:Event):void
{
//swf_loader=new Loader;
swf_loader.loadBytes(_evt.target.data);
swf_loader.contentLoaderInfo.addEventListener(Event.COMPLETE ,swfLoadComplete);
}

//------------------------加载完成------------------------
private function swfLoadComplete(_evt:Event):void
{
removeChild(play_mc);
play_mc=_evt.target.loader.content as MovieClip;
play_mc.addEventListener(Event.ENTER_FRAME,onMcEnterFrame);
swf_loader.unload ();
addChild(play_mc);
}

//-----------------------检测是否播放到最后一帧---------------
private function onMcEnterFrame(_evt:Event):void
{
var _mc:MovieClip=_evt.target as MovieClip;
if (_mc.currentFrame ==_mc.totalFrames ) {
_mc.removeEventListener(Event.ENTER_FRAME,onMcEnterFrame);
p++;
swfLoad();
}
trace("当前播放的是:"+name_array[p]+" ( "+_mc.currentFrame +"/"+_mc.totalFrames +")");
}
}
}

你可能感兴趣的:(.net,Flash)