博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3 ApplicationDomain
阅读量:6244 次
发布时间:2019-06-22

本文共 1286 字,大约阅读时间需要 4 分钟。

ApplicationDomain为AS3的应用程序域。它和安全域(沙箱)还是有区别的。

应用程序域有三种类型:系统域子域(新的应用程序域)、当前应用程序域、当前应用程序域的子域。他们的关系就像是这样:

详解:

ApplicationDomain 类的用途是存储 ActionScript 3.0 定义表。SWF 文件中的所有代码被定义为存在于应用程序域中。 可以使用应用程序域划分位于同一个安全域中的类。这允许同一个类存在多个定义,并且还允许子级重用父级定义。

利用ApplicationDomain加载类定义的代码如下

1
2
3
4
5
6
7
8
9
10
var 
urlRequest:URLRequest = 
new 
URLRequest(url);
var 
loader:Loader = 
new 
Loader();
var 
context:LoaderContext = 
new 
LoaderContext();
//当前域
context.applicationDomain = ApplicationDomain.currentDomain;
//新应用程序域
//context.applicationDomain = new ApplicationDomain();
//当前域子域
//context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
loader.load(urlRequest, context);

下面来说说具体的三个域:


1、当前域
在当前域中加载类定义后,如果当前域中已经有了同名的类定义,那么新加载的类定义不会覆盖原来的(注意!important),原来没有的会添加到as3的定义表中。

2、新应用程序域
(在系统域中新建一个应用程序域,他和当前域是平级的:上面的图中已经有明确的表达)这样我们可以对相同名称的类,可以有两个完全不同的定义。
此方法的一个用处是使旧版应用程序能够动态加载相同应用程序的更新版本,而不会发生冲突。之所以不发生冲突,是因为尽管使用的是同样的类名称,但它们划分到不同的应用程序域中。


3、当前域子域
在当前域中新建一个子域。这里也有一个要注意的,就是当父级域中(也就是当前域)没有同名的定义时,子域中的类才会被定义。
如果能够确保所有类始终更新为向后兼容,并且正在加载的应用程序始终比其加载的软件的版本新,则子级将使用父级版本(旧版本)。如果可以确保不继续拥有对子级 SWF 的引用,则拥有了新的应用程序域还使您能够卸载所有的类定义以便于垃圾回收。此方法使加载的模块可以共享加载者的 singleton 对象和静态类成员。


获取特定的应用程序域:

1
Loader.contentLoaderInfo.applicationDomain
本文转自Aonaufly51CTO博客,原文链接: http://blog.51cto.com/aonaufly/1950162如需转载请自行联系原作者
你可能感兴趣的文章
接口的使用
查看>>
LeetCode 347. Top K Frequent Elements
查看>>
二叉树遍历
查看>>
JAVA 并发
查看>>
Markdown引用微博图床被防盗链不加载响应403完美解决
查看>>
0302思考并回答一些问题
查看>>
Sphinx的介绍和原理探索
查看>>
php中mysql数据库操作类 -李盛鹏 -博客园
查看>>
coreseek增量索引
查看>>
ubuntu更新源(2018最新)
查看>>
python使用小结——iloc与loc的使用
查看>>
linux crontab定时任务运行shell脚本(shell执行sql文件)
查看>>
Python用Pillow(PIL)进行简单的图像操作
查看>>
[51Nod 1584] 加权约数和
查看>>
微信小程序的同步操作
查看>>
Lua中的操作系统库
查看>>
环境变量path的值大于1024的解决办法
查看>>
webpack 通用环境快速搭建
查看>>
js获取url参数值
查看>>
Django 文件下载功能
查看>>