http://www.actionscript3.cn/magicianzrh/archives/2007/11/release-your-class-resourcefla.html
自己的工具类写得多了,想发布出来又不想公开细节的话,可以试着用下面的方法
你可以选择发布成swf或者swc
转正题:
我按我的代码组织方式
创建一个文件夹做这个测试:CodeLib,下面创建org/as3cn/MagicianzrhCodeLib文件夹结构
为了方便MagicianzrhCodeLib下创建src资源文件夹、swc文件夹(用于存放生成的swc)
src下新建一个as
复制内容到剪贴板
代码:
package org.as3cn.MagicianzrhCodeLib{
/**
* @author magicianzrh
* @version 1.0
* @deprecated [url]http://www.action[/url]script3.cn/magicianzrh
*/
public class TestSWCLib {
public function TestSWCLib(){
init();
}
private function init():void {
trace("the TestSWCLib is generated");
}
}
}回到CodeLib文件夹,创建一个新的TesSWCLib.fla文件和一个文档类TesSWCLib.as
TesSWCLib.as
复制内容到剪贴板
代码:
package
{
import flash.display.Sprite;
import org.as3cn.MagicianzrhCodeLib.TestSWCLib;
/**
* @author magicianzrh
*/
public class TestLoadSWC extends Sprite
{
public function TestLoadSWC() {
org.as3cn.MagicianzrhCodeLib.TestSWCLib;
}
}
}在flash cs3中设置TestSWCLib.fla的文档类为TestSWCLib.as,之后在发布设置中的Flash部分把“Export SWC”选中,发布下就ok了
在CodeLib你会发现一个新创建的SWC
在FDT中,把这个新的swc随便加入到一个项目中,用FDT的工具你可以方便的查看swc包含东西,发现了没--文档类也别包含进去了TestLoadSWC
如果不使用文档类,直接在时间轴上写的话,发布成swc,你也可以发现其实Flash自己做了个文档类,还蛮有意思的。
最后利用下那个发布出来的swf,其实swf里面也已经把类包含进去了
用下面代码
复制内容到剪贴板
代码:
var codeLoader:Loader = new Loader( );
codeLoader.contentLoaderInfo.addEventListener(
Event.COMPLETE, loadedCode);
codeLoader.load(new URLRequest("MagicianzrhCodeLib.swf"),new LoaderContext(false, ApplicationDomain.currentDomain));
//最后一段就是把swf的代码加载到当前域之后loadedCode中可以使用swf中的类资源了,其实
Flash DLL就是这个道理,只是在COMPLETE之前不能使用swf中的类包--除非你把代码都编译进去了,这样dll的优势也体现不出来--这个主要还是应对FLEX那边的