[原创]AS3.0使用外部SWF文件的库文件

  在swf文件中使用外部swf文件的库文件,从而达到类似素材包的目的。
  第一个文件pic.fla,添加四张图片到库中,为每一张图片关联一个类,我关联的类名分别是a1、a2、a3、a4,并在第一帧导出(关联时会把图片名字默认为关联的类名,文件编译的时候会自动生成一个类)。再创建一个as文件Pic.as作为pic.fla的文档类,内容如下:
package {
	import flash.display.MovieClip;
	public class Pic extends MovieClip {
		public static const arr:Array=[a1,a2,a3,a4];
		public function Pic() {
			
		}
		public function getPic(n:int):* {
			var c:Class=arr[n];
			var movie:*=new c;
			return movie;
		}
	}
}

    公共方法getPic()是用来返回库中的素材图片的,这里只设计里一个参数——素材编号来获得需要的素材,现实项目中可以定义更多的获取规则。“new c”的实例化过程也可以放到外部,以剥离该功能。
   
    第二个文件load.fla,这个文件就是把pic.fla文件当成外部素材包加载的,为了实验简便,就没有给load.fla做文档类,而直接把代码写在了帧上。代码如下:
var loader:Loader=new Loader();
var url:URLRequest=new URLRequest("pic.swf");
loader.load(url);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCom);
function onCom(e:Event){
	var m:*=e.target.content;
	addChild(m.getPic(0));
}

    当加载完成后,调用pic.swf的getPic()方法,传递要获得的素材编号即可获得该素材。这样,就可以在不修改load.fla的情况下修改项目的素材了。

你可能感兴趣的:(C++,c,C#,Flash)