AS3 ApplicationDomain
admin
2023-02-17 16:19:59
0

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

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

AS3 ApplicationDomain

详解:

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

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

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 对象和静态类成员。


获取特定的应用程序域:

Loader.contentLoaderInfo.applicationDomain


相关内容

热门资讯

我来教教您“富豪麻将真的有挂吗... 有 亲,根据资深记者爆料富豪麻将是可以开挂的,确实有挂(咨询软件无需打开...
【第一消息】“齐聚天下是不是有... 【第一消息】“齐聚天下是不是有挂?”(太坑了果然有挂)您好,齐聚天下这个游戏其实有挂的,确实是有挂的...
今日重大发现“皇豪互娱牛牛开挂... 家人们!今天小编来为大家解答皇豪互娱牛牛透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
玩家最新攻略“凉山跑得快究竟有... 家人们!今天小编来为大家解答凉山跑得快透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
终于明白“趣游天水麻将究竟有挂... 您好:趣游天水麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
【第一消息】“经典联盟牛牛到底... 您好:经典联盟牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
终于明白“樱花之盛牛牛到底有挂... 您好:樱花之盛牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
我来教教您“青松游戏有没有挂?... 家人们!今天小编来为大家解答青松游戏透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
【第一财经】“福星游戏究竟有挂... 家人们!今天小编来为大家解答福星游戏透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
【第一资讯】“明星麻将到底有挂... 【第一资讯】“明星麻将到底有挂吗?”(详细开挂教程)您好,明星麻将这个游戏其实有挂的,确实是有挂的,...