码迷,mamicode.com
首页 > 其他好文 > 详细

AS3加载操作swf

时间:2015-11-28 18:27:12      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

随着程序越来越大,我们需要把它拆分成多个swf,在需要的时候动态加载。拆分时应该尽量把不同的类编译进唯一的swf,避免因swf文件增多而使整个程序的文件尺寸增大。按此原则可以拆分出以下两种swf,借助 ApplicationDomain 共享其代码和资源。

    * 模块(Module)
      按照程序逻辑,可以拆分出多个“功能模块”,如“注册”、“管理”等等;按照游戏或社区类程序的关卡或场景,可以拆分出不同的“场景模块”。这些模块不是主程序运行必须的,只在需要的时候加载。
    * 运行时共享库(RSL)
      主场景或者多个模块通用的资源,比如位图、声音、设计好的页面元素等,可作为“库”在主程序运行前加载。可以整套更换的皮肤(skin)只需先加载一套。

  ApplicationDomain 是存放AS3定义(包括类、方法、接口等)的容器。使用Loader类加载swf时可以通过指定 ApplicationDomain 参数将swf加载到不同的域(Domain)

package {
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;
    import flash.system.ApplicationDomain;

    public class AS1te extends Sprite
    {
        public var url:String = "arenaMC.swf";
        public var arr:Array;
        public var domain:ApplicationDomain;
        public var loader:Loader;
        public function AS1te()
        {
            this.url=url;
            loader=new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplement);
            loader.load(new URLRequest(url));
        }
        private function onLoadComplement(evt:Event):void{
            domain=new ApplicationDomain();
            domain = evt.currentTarget.applicationDomain;
            trace(check("ArenaListMC"));
        }

        private function check(name:String):Boolean
        {
            var result:Object;
            var rr:Boolean;
            if(domain.hasDefinition(name)){
                rr=true;
                var cls:Class=domain.getDefinition(name) as Class;
                result=new cls();
            }
            var ui:MovieClip=result as MovieClip; //这里可取出swf中的某个MovieClip,对他进行操作
            this.addChild(ui);
            return rr;
        }
    }
}

 

AS3加载操作swf

标签:

原文地址:http://www.cnblogs.com/duhuo/p/5003056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!