Flash AS3.0 实现FLASH的“动态链接库”

  • 来源: 豆豆网 作者: xuqingzhong   2008-05-27/01:59
  •       因为以前是做.net 的开发的,所以很习惯与 DLL 文件,觉得它异常方便,特别开发大型项目时,分成不同的DLL文件进行开发,不但节省了编译的时间,也使得程序结构更加完美. AS3中,写一类,代码如下:

    packagecw.DizhuAS3
    {
    publicclassDizhuRules
    {
    publicfunctionDizhuRules()
    {
    trace("DizhuRulesCreate")
    }
    }
    }

    新建一FLA[DizhuAS3.fla],写一帧写以下代码:

    import cw.DizhuAS3.*;

    DizhuRules;//这里还是和AS2一样,如果没在FLASH里出现过,编译的时候不会被编译进SWF中.

    [size=+0][size=+0]

    编译后得到包含有 DizhuRules 类的 DizhuAS3.swf 文件.我把他扔进一个叫LIB的文件夹里.再新建一FLA,尝试在第一帧写以下代码:

    importflash.net.*;
    importflash.events.*;varmyloader:Loader=newLoader();
    myloader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLibLoaded);
    myloader.load(newURLRequest("LIB/"+"DizhuAS3"+".swf"));
    functiononLibLoaded(e:Event):void{
    trace("loadcompele");
    varClassReference:Class=myloader.contentLoaderInfo.applicationDomain.getDefinition("cw.DizhuAS3::DizhuRules")asClass;//("cw.DizhuAS3::DizhuRules")与("cw.DizhuAS3.DizhuRules")效果一样
    newClassReference();
    }

    编译运行,可以看得到 DizhuRules Create 被 trace了出来...

    AS3引入了 applicationDomain ,使得被载入进来的swf 里的类与主swf的里都存在与不同的环境中,从而不会出现像AS2中的旧的被新的同名的类替换的后果[因为AS2里的类都是加在_global上]


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多