Flash/Flex学习笔记(13):如何做自定义Loading加载其它swf

const FILE_PATH:String="main.swf";


const CLASS_NAME:String="MainSwf";

 
var loader:Loader;


var request:URLRequest;

 
loader = new Loader();

 
request=new URLRequest(FILE_PATH);

 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);


loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);

 
loader.load(request);

 
function onComplete(e:Event):void

var domain:ApplicationDomain=e.target.applicationDomain as ApplicationDomain;

 
var swfClass:Class=domain.getDefinition(CLASS_NAME) as Class;

 
var swfInstance:Sprite = (new swfClass()) as Sprite;

 
swfInstance.x=0;

 
swfInstance.y=0;

 
//卸掉舞台上现有的东西    

 
var _childCount = numChildren;

 
for (var i:int=_childCount-1; i>=0; i--) {       

 
this.removeChildAt(i);  

 
}   

 
//加载刚下载的动画

 
this.addChild(swfInstance);

 
}


function onProgress(e:ProgressEvent) {

 
//trace(e);

 
label1.text = "正在加载," + e.bytesLoaded + " / " + e.bytesTotal + ", " + (Math.round(  (100 * e.bytesLoaded / e.bytesTotal) / 0.01) * 0.01) + " %";

 
}

 
stop();

解释:as3中每个fla都可以对应一个.as文件,用于实现代码界面分离,上面代码中的CLASS_NAME即为.as文件中定义的类名

注意:如果在Main.fla中用到了系统组件(比如TileList之类),最好在Loading.fla中也拖一个出来到舞台上,然后删除,否则在loading中加载main的实例时,会出一些莫名其妙的问题!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值