弃天笑(soda.C)的专栏

专注于Flash RIA和Flash网络游戏开发

弃天笑ID:sujun10
19529次访问,排名5903好友7人,关注者26
从事过java应用开发,flash网络游戏开发,现在从事flash教育系统开发
sujun10的文章
原创 34 篇
翻译 4 篇
转载 7 篇
评论 55 篇
弃天笑的公告
我的新blog开张了,以后第一 时间更新的是那个blog了,之后才在这里更新,有兴趣的人可以到那里去看,主要是说Flash RIA和flash游戏的 www.sujun.org
最近评论
sujun10:没试过,应该要做类似按钮之类的,或者插入html标签
丁仙霖:非常感谢,虽然有些地方,没看懂
123456:小弟,如何在flash中加入email 的链接??
paul7525:还不错啊,有收获~~谢谢啦
paul7525:还不错啊,有收获~~谢谢啦
文章分类
收藏
    相册
    我的相片
    Flash
    asfox Blog
    弃天笑的小窝
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 [AS3]使用RSL进行AS瘦身编程收藏

    新一篇: [AS3]Flash Socket底层接受数据的初级处理 | 旧一篇: [AS3]在反射中使用静态方法

    RSL是什么??RSL是 Runtime Shared Library的简称。我个人的理解时是在swf编译的时候,不把在该swf中使用的一些类库 编译进swf中去,而是在该swf运行的时候动态加载,该swf是要使用的类库,从而达到减小swf体积的目的。
    做as编程的人都知道,如果每个swf都引用了同一个类的话,那么你编译每个swf的时候,都会把那个类编译进去,也是就是说,无形中对整个应用而言,就多了几份类库而增大了内容
    例 如你有 a.swf,b.swf,c.swf,同时引用了sodaTest.as这个类,传统的做法是每个swf都把sodaTest编译进去。而使用 RSL技术的话,则把sodaTest.as这个类编译进一个特殊的swf进去(lib.swf,该swf包含sodaTest),在a,b,c运行的时 候,把lib.swf这个swf加载进去就可以了。三个swf共享一个,从而减小了体积
    下面,看具体的设置步骤吧(下面提供的方法只是多种方法的其中之一:),使用工具是FlexBuilder,以asiwng代码库为例子

    首先我们需要制作一个被多个swf需要加载swf代码库
    1.把需要的代码打包进一个swf里去,该步骤前需要一个你需要打包进代码库的swc
    (可以在FB中建立一个Flex Library Project,利用把你需要的代码生成swc)
    新建个Flex Library Project为Aswing


    2.新建一个AswingDll的ActionScript Project项目
    新建个AswingDll


    3.接着在AswingDll项目属性中,增加命令,在ActionScprit Compiler 增加下面的命令
    -include-libraries 
    E:\workspace\FlexProject\Aswing\bin
    其中E:\workspace\FlexProject\Aswing\bin是你需要做加载的代码库的swc的目录位置
    (我这里是用我自己设置的目录去生成,而不是在flex中刚建立的)

    4.接着编译就行了.....看生成AswingDll,用破解软件看看,是不是多了你需要的代码了:),大小有400多K,包括了awing的代码了

    5.接着新建一个AswingTest的ActionScript Project项目,用来使用这个AswingDll
    在AswingTest这个项目属性还需要做一些设置的,在Library Path中,添加aswing代码库或者aswing的swc

    看图片中蓝色的部分,双击它,弹出下面的界面,选择Exteral这个选项,再确定就可以了

    做完这些步骤后,就可以去编译自己的程序啦

    具体的我就先不写了,可以参考www.flashdll.org,里面有详细的例子
    (明天我再出一个使用例子)
    有什么问题,就到www.actionscript3.cn提问吧
    呵呵

    之前的代码修改了一下
    package 
    {
        import flash.display.Sprite;
        import flash.display.Loader;    
        import flash.events.Event;
        import flash.system.LoaderContext;
        import flash.net.URLRequest;
        import flash.system.ApplicationDomain;
        import flash.utils.getDefinitionByName;

        import org.aswing.AsWingManager;
        import org.aswing.JFrame;
        
        [SWF (width
    =800, height=600)]
        
        public class Main extends Sprite 
        
    {
            private 
    var loader:Loader;
            public 
    function Main() 
            
    {
                loader 
    = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoader);
                loader.load(
    new URLRequest("dll/AsWingDLL_1_3_0.swf"), 
                        
    new LoaderContext(false, ApplicationDomain.currentDomain));
            }

            
            private 
    function onLoader(event:Event):void
            
    {
                AsWingManager.initAsStandard(
    this);
                
    var frame:JFrame = new JFrame(this,"测试反射");
                frame.setSizeWH(
    400,300);
                frame.show();

            }

        }

    }
    效果图


    很明显,可以看到体积非常小,

    发表于 @ 2008年05月11日 13:34:35|评论(loading...)|编辑

    新一篇: [AS3]Flash Socket底层接受数据的初级处理 | 旧一篇: [AS3]在反射中使用静态方法

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 弃天笑