zoukankan      html  css  js  c++  java
  • as3 动态类库使用

    参阅:http://hi.baidu.com/lozu/blog/item/16787fad1541410e4a36d626.html

     

    原理:类A 被类B引用 也被C引用
    那么实际上 会在B中装载一份类A 
                        在C中也装载一份类A

    这样公共引用的类A 会被大量的复制到使用它的类中。
    无形中,增加了文件的大小。

     

    为了给swf瘦身。我们使用RSL。RSL是 Runtime Shared Library的简称。

    步骤:建立类库 Lib   》

             生成配套的swf 》 新建空的as项目 ,设置编译参数引入Lib  ,发布出useLib.swf

             新项目使用

    1:建立一个NaikingDll 类库项目。

         建立一些类如:com.naiking.ntil.NaikingHello
         

     1 package com.naiking.core
     2 {
     3     public class NaikingHello
     4     {
     5         public function NaikingHello()
     6         {
     7         }
     8         public static function hello(_name:String):String
     9         {
    10             return("Hello "+_name);
    11         }
    12     }
    13 }


         选择:项目--构建项目。
                  这时FlashBuilder会构建出一个新生成的NaikingDll.swc文件
    2:生成配套的swf 
         建立一个新的actionscript项目NaikingSwf
         设置编译参数为-include-libraries ../NaikingDll/bin
         这样就把swc里的类都引入进来了。
         发布出一个swf:NaikingSwf.swf

         查看这个swf ,会发现里面有了NaikingDll.swc里的代码

         PS:可以导入多个需要的swc库,从项目--属性里添加

                并在 输出文件夹:浏览到 新建项目的bin,这样可以把每个swc 都会导出 对应的多个swf

    3:新项目使用这种RSL
         所需要的是NaikingDll.swc 和 NaikingSwf.swf

         这样做是不是重复了?swc 和 swf 里都是相同的代码。
         swc是以引用库方式引入到项目中,并没有嵌入到项目,

               链接进来的原因是方便写代码的时候,方便调用那些dll里的类。

               发布出的Client.swf运行的时候,是找不到swc的(swc并没有被嵌入进Client.swf)

          swf是实际Client.swf运行时靠加载后,读取其内部的类的。

     

          具体做法:

          引用所有使用的swc:使用项目--属性--库路径导入

    ===========================================

    所有的类库swc和对应的swf ,都生成后,

    新建一个自己的项目(flex ,as)都可以,设置swc的引用,在项目--属性--库路径导入

    bin目录有对应的swf文件

     

    使用,随便创建自己的类,这些类都引用了那些swc里的类。

    PS:项目的主类不可以使用,尽管你可以import.....发现这些类。

    swc实际是通过加载swf们后,才可以用。

     

    新工程的类

    package
    {
        import com.naiking.core.NaikingHello;
        
        import flash.display.Sprite;
        import flash.text.TextField;

        public class Facade extends Sprite
        {
            public function Facade()
            {
                var txt:TextField=new TextField();
                txt.text=NaikingHello.hello("naiking");
                addChild(txt);
            }
        }
    }

    主类:

     

    public function Client()
            {
                var loader = new Loader();
                
                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoader);
                
                  loader.load(new URLRequest("UsingDll.swf"),
                    
                    new LoaderContext(false, ApplicationDomain.currentDomain));
                
                       }
            
               
            
                   private function onLoader(event:Event):void
            
                    {
                           
                            addChild(new Facade());
                
                    }
            

            }






     

  • 相关阅读:
    k8s是什么
    jmeter性能测试的策略
    面试的灵魂拷问:你最大的缺点是什么?
    面试的灵魂拷问:你做过的最令你自豪的事情是什么?
    面试的灵魂拷问:你犯过的最大的失误是什么?
    5-django rest framework,搭建api,这是最重要的章节
    4-restfulapi的介绍,vue代码结构
    组合恒等式证明——「Zeilberger 老爷子的 T 恤上写了啥?」
    「NOI2020」 美食家 【矩阵快速幂】
    [CEOI2014] The Wall【最短路】
  • 原文地址:https://www.cnblogs.com/naiking/p/2644690.html
Copyright © 2011-2022 走看看