在swf文件中使用外部swf文件的库文件,从而达到类似素材包的目的。
第一个文件pic.fla,添加四张图片到库中,为每一张图片关联一个类,我关联的类名分别是a1、a2、a3、a4,并在第一帧导出(关联时会把图片名字默认为关联的类名,文件编译的时候会自动生成一个类)。再创建一个as文件Pic.as作为pic.fla的文档类,内容如下:
公共方法getPic()是用来返回库中的素材图片的,这里只设计里一个参数——素材编号来获得需要的素材,现实项目中可以定义更多的获取规则。“new c”的实例化过程也可以放到外部,以剥离该功能。
第二个文件load.fla,这个文件就是把pic.fla文件当成外部素材包加载的,为了实验简便,就没有给load.fla做文档类,而直接把代码写在了帧上。代码如下:
当加载完成后,调用pic.swf的getPic()方法,传递要获得的素材编号即可获得该素材。这样,就可以在不修改load.fla的情况下修改项目的素材了。
第一个文件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的情况下修改项目的素材了。