打印

[AS3] 发布你的资源文件(release your class resource)-Flash cs3篇

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那边的
http://www.actionscript3.cn/magicianzrh
研究下~
AS3.CN那里今天怎么不稳定
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-