[转帖]外部swf库资源载入及使用
[转帖]外部swf库资源载入及使用
具体出自哪里已经不记得了,如果谁知道请告知,我好加上。
外部swf库资源载入及使用
如果不知道怎么载入swf文件,请先看 Coding ActionScript 3.0 [3] 外部swf文件载入。
很多的时候我们并不希望我们的项目就是一个超级大的swf文件,尤其是在as3中,你可以做到代码与界面的分离,所以,将资源放在一个一个的swf文件中成为必要。那么如果载入和使用这些外部的swf资源呢?不要着急,先喝口水。。。。
在as2中你可以在加载完swf库文件后使用attachMovie将元件添加进来,看上去很方便,其实,as3提供了更方便的方式来,下面请听我慢满道来......
首先我们要来了解一下as3的一个新特性,那就是attachMovie这个方法没有了(废话),取代它的是addChild。任何的MC我们都需要new 出来,然后addChild另一个MC中,所以,你加载进来的swf文件事实上也是一个mc(实际是DisplayObject,DisplayObject是什么,你得看帮助了。),对于一个DisplayObject,你可以做什么?attachMovie?不,这个方法没有了!那么。。。new ?,对了!首先,你可以在库文件中(我这里把它叫:lib.fla),建立一个元件,class名称为Lib,至于里面的动画什么的,你自己做。然后在主场景第一帧写这样的代码:
function getMC(id:String):MovieClip{
try{
var ClassReference:Class = getDefinitionByName(id) as Class;
}catch(e:Error){
trace(e);
return new MovieClip();
}
var instance:Object = new ClassReference();
return instance;
}
完了一可以测试一下:
var mc:MovieClip = getMC("Lib");
this.addChild(mc);
如果你可以看到你的元件被加载,那么恭喜你,你成功跨出第一步了。这里需要提到的是getDefinitionByName方法,他是as3的一个新方法,你可以通过ClassName来获得Class对象。
OK,你可以建立你的主程序了,我这里建立了一个main.fla文件,在第一帧加入这样的代码:
var loaderoader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHanlder);
loader.load(new URLRequest("lib.swf"));
//资源加载完成
function loadCompleteHanlder(e:Event):void{
var lib:MovieClip = e.target.content.getMC("Lib");
this.addChild(lib);
lib.x = lib.y = 100;
}
然后,发布!
具体出自哪里已经不记得了,如果谁知道请告知,我好加上。
外部swf库资源载入及使用
如果不知道怎么载入swf文件,请先看 Coding ActionScript 3.0 [3] 外部swf文件载入。
很多的时候我们并不希望我们的项目就是一个超级大的swf文件,尤其是在as3中,你可以做到代码与界面的分离,所以,将资源放在一个一个的swf文件中成为必要。那么如果载入和使用这些外部的swf资源呢?不要着急,先喝口水。。。。
在as2中你可以在加载完swf库文件后使用attachMovie将元件添加进来,看上去很方便,其实,as3提供了更方便的方式来,下面请听我慢满道来......
首先我们要来了解一下as3的一个新特性,那就是attachMovie这个方法没有了(废话),取代它的是addChild。任何的MC我们都需要new 出来,然后addChild另一个MC中,所以,你加载进来的swf文件事实上也是一个mc(实际是DisplayObject,DisplayObject是什么,你得看帮助了。),对于一个DisplayObject,你可以做什么?attachMovie?不,这个方法没有了!那么。。。new ?,对了!首先,你可以在库文件中(我这里把它叫:lib.fla),建立一个元件,class名称为Lib,至于里面的动画什么的,你自己做。然后在主场景第一帧写这样的代码:
function getMC(id:String):MovieClip{
try{
var ClassReference:Class = getDefinitionByName(id) as Class;
}catch(e:Error){
trace(e);
return new MovieClip();
}
var instance:Object = new ClassReference();
return instance;
}
完了一可以测试一下:
var mc:MovieClip = getMC("Lib");
this.addChild(mc);
如果你可以看到你的元件被加载,那么恭喜你,你成功跨出第一步了。这里需要提到的是getDefinitionByName方法,他是as3的一个新方法,你可以通过ClassName来获得Class对象。
OK,你可以建立你的主程序了,我这里建立了一个main.fla文件,在第一帧加入这样的代码:
var loaderoader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHanlder);
loader.load(new URLRequest("lib.swf"));
//资源加载完成
function loadCompleteHanlder(e:Event):void{
var lib:MovieClip = e.target.content.getMC("Lib");
this.addChild(lib);
lib.x = lib.y = 100;
}
然后,发布!
案例:助飞网 zhufeiwang.com
主swf中如何调用子swf库中的图片





