加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ApplicationDomain与动态加载外部swf

发布时间:2020-12-15 07:03:54 所属栏目:百科 来源:网络整理
导读:? ? ? ?如何动态加载一个外部的swf?使用Loader类: ? ? var _bagPanelLoader : Loader = new Loader; ? ? ?/*添加事件响应,在swf加载完毕后再获取里面的资源*/ ? ?_bagPanelLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete); ?
? ? ? ?如何动态加载一个外部的swf?使用Loader类:
? ? var _bagPanelLoader : Loader = new Loader;
?
? ?/*添加事件响应,在swf加载完毕后再获取里面的资源*/
? ?_bagPanelLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);
? ?/*错误处理*/
? ?_bagPanelLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onLoadError);
? ?/*开始加载swf*/
? ?_bagPanelLoader.load(new URLRequest("../bag.swf"));
? ? ? ?因为一个swf可能很大,加载需要时间,所以不能在一执行完load函数后就获取swf里面的内容,否则可能会出错。必须要为Loader的LoaderInfo的COMPLETE事件添加一个事件监听器,一但swf载入完毕就触发监听器指定的响应函数,在这里为onLoaderComplete,但不在代码中给出。

? ? ? ?如果有两个同名但实现不同的swf,若用上面的方法加载的话会失败。必须要用不同的ApplicationDomain将他们区分开来:
? ?var _bagPanelLoader : Loader = new Loader;

? ?/*添加事件响应,在swf加载完毕后再获取里面的资源*/
? ?_bagPanelLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);
? ?/*错误处理*/
? ?_bagPanelLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onLoadError);
? ?
? ?/*新建加载器上下文,再新建应用程序域*/
? ?var context:LoaderContext = new LoaderContext();
? ?context.applicationDomain = new ApplicationDomain();
? ?
? ?/*开始加载swf*/
? ?_bagPanelLoader.load(new URLRequest("../bag.swf"),context);

? ? ? ?除了系统域,每一个ApplicationDomain都必须与一个父域相关联,若不指定ApplicationDomain的父域,则其父域为系统域。主应用程序的父域为系统域。可以在new ApplicationDomain时将父域(也是一个ApplicationDomain)作为参数传进去来指定该ApplicationDomain的父域。如:
? ?var context:LoaderContext = new LoaderContext();
? ?context.applicationDomain = new ApplicationDomain(?ApplicationDomain.currentDomain?);?
将当前应用程序域作为新应用程序域的父域。

? ? ? ?已加载的类仅在其父级中没有相关定义时才进行定义。不能用较新的定义覆盖已加载的类定义。

? ? ? ?其实应用程序域 ApplicationDomain 也没有那么神秘,它只是将分布式的类定义进行分类的一种容器,好让有相同类名但不同实现的外部类可以同时存在。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读