六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 12|回复: 0

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

[复制链接]

升级  83.33%

51

主题

51

主题

51

主题

秀才

Rank: 2

积分
175
 楼主| 发表于 2013-1-29 09:20:59 | 显示全部楼层 |阅读模式
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的实例时,会出一些莫名其妙的问题!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表