要说应用程序域,就不得不说安全沙箱

安全沙箱在帮助文档的解释是:

客户端计算机可以从很多来源(如外部 Web 站点或本地文件系统)中获取单个 SWF 文件。当 SWF 文件及其它资源(例如共享对象、位图、声音、视频和数据文件)加载到 Flash Player 中时,Flash Player 会根据这些文件和资源的来源单独地将其分配到安全沙箱中。

从导入到安全域的 SWF 文件加载嵌入内容

当加载 SWF 文件时,可以设置用于加载文件的 Loader 对象的 load() 方法中的 context 参数。此参数是一个 LoaderContext 对象。将此 LoaderContext 对象的 securityDomain 属性设置为 Security.currentDomain 时,Flash Player 将在被加载 SWF 文件所在的服务器上检查是否存在 URL 策略文件。如果存在策略文件,并且该文件向执行加载的 SWF 文件所在的域授予访问权限,则可以作为导入媒体加载 SWF 文件。这样,执行加载的文件可以获得对 SWF 文件的库中对象的访问权限。

SWF 文件访问其它安全沙箱中被加载 SWF 文件的类的另一种方法是:使被加载的 SWF 文件调用 Security.allowDomain() 方法,以向执行调用的 SWF 文件所在的域授予访问权限。可以将对 Security.allowDomain() 方法的调用添加到被加载 SWF 文件的主类的构造函数方法中,然后使执行加载的 SWF 文件添加事件侦听器,以便响应由 Loader 对象的 contentLoaderInfo 属性调度的 init 事件。当调度此事件时,被加载的 SWF 文件已经调用构造函数方法中的 Security.allowDomain() 方法,因此被加载 SWF 文件中的类可用于执行加载的 SWF 文件。执行加载的 SWF 文件可以通过调用 Loader.contentLoaderInfo.applicationDomain.getDefinition() 从被加载的 SWF 文件中检索类。

使用 ApplicationDomain 类

在使用 Loader 类 API 加载用 ActionScript 3.0 编写的外部 SWF 文件时,可以使用应用程序域。(as2 编写的swf以及图片等不例外)包含在已加载类中的所有 ActionScript 3.0 定义都存储在应用程序域中。加载 SWF 文件时,通过将 LoaderContext 对象的 applicationDomain 参数设置为 ApplicationDomain.currentDomain,可以指定文件包含在 Loader 对象所在的相同应用程序域中。通过将加载的 SWF 文件放在同一个应用程序域中,可以直接访问它的类。如果加载的 SWF 文件包含嵌入的媒体(可通过其关联的类名称访问),或者您要访问加载的 SWF 文件的方法,则这种方式会很有用,如下面的示例所示(来自帮助文档):

  1. package
  2. {
  3. import flash.display.Loader;
  4. import flash.display.Sprite;
  5. import flash.events.*;
  6. import flash.net.URLRequest;
  7. import flash.system.ApplicationDomain;
  8. import flash.system.LoaderContext;
  9. public class ApplicationDomainExample extends Sprite
  10. {
  11. private var ldr:Loader;
  12. public function ApplicationDomainExample()
  13. {
  14. ldr = new Loader();
  15. var req:URLRequest = new URLRequest("Greeter.swf");
  16. var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
  17. ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
  18. ldr.load(req, ldrContext);
  19. }
  20. private function completeHandler(event:Event):void
  21. {
  22. ApplicationDomain.currentDomain.getDefinition("Greeter");
  23. var myGreeter:Greeter = Greeter(event.target.content);
  24. var message:String = myGreeter.welcome("Tommy");
  25. trace(message); // Hello, Tommy
  26. }
  27. }
  28. }

复制代码

新人补钙系列教程之:体验ApplicationDomain 应用程序域的更多相关文章

  1. 新人补钙系列教程之:拒绝CPU高占用

    1.关于MovieClip和Sprite的鼠标事件,当不需要鼠标事件的时候将mouseEnabled和mouseChildren设为false. 不断的检测鼠标交互事件会消耗CPU,尤其是大量交互对象 ...

  2. 新人补钙系列教程之:3D理论 - 二进制空间分割(BSP)树

    1. 什么是BSP树 BSP算法的初始数据是一个多边形集,BSP在预处理的时候先在多边形集中选取一个多边形作为支持平面,然后根据这个平面将集合划分成两个部分,每个部分是一个新的子节点,递归进行该过程, ...

  3. 新人补钙系列教程之:AS3 与 PHP 简单通信基础

    package { import flash.display.Loader; import flash.events.Event; import flash.net.URLLoader; import ...

  4. 新人补钙系列教程之:AS 与 JS 相互通信

    比较常用的,AS 调用 JS private function callJS():void{ ExternalInterface.addCallback("callbackQQPay&quo ...

  5. 新人补钙系列教程之:Molehill底层API中最重要的Context3D

    Context3D,是一个三维空间的处理环境,负责创建并处理三维对象的各个要素如顶点.片段.透视等等,并将处理的结果使用AGAL(Adobe图形汇编语言)上传给显卡进行运算,运算结果最终被回传给CPU ...

  6. 新人补钙系列教程之:AS3 位运算符

    ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript 中,所有整数字面量默认都是有符号整数,这意味着什么呢? 有符号整数使用 3 ...

  7. 新人补钙系列教程之:XML处理方法

    初始化XML对象XML对象可以代表一个XML元素.属性.注释.处理指令或文本元素.在ActionScript 3.0中我们可以直接将XML数据赋值给变量: var myXML:XML = <or ...

  8. 新人补钙系列教程之:AS3事件处理--事件流

    一个flash应用程序可能会非常复杂,比如,有很多可视实例嵌套在一起,这样的话会形成一个树形结构,这个结构的根是stage,然后一级级到不同的实例,一般来说,要把这个树形结构倒过来看,即stage在顶 ...

  9. Spring 系列教程之 bean 的加载

    Spring 系列教程之 bean 的加载 经过前面的分析,我们终于结束了对 XML 配置文件的解析,接下来将会面临更大的挑战,就是对 bean 加载的探索.bean 加载的功能实现远比 bean 的 ...

随机推荐

  1. ListView控件的不为人知的秘密

    使用ListView控件展示数据 1.图像列表控件(ImageList控件) 图像列表控件(ImageList控件)是含有图像对象的集合,可以通过索引或关键字引用该集合的每个对象,ImageList控 ...

  2. 1.1 由C++Builder 6.0 通向OpenGL(1)

    http://book.51cto.com/art/201104/255588.htm 第1章  架好通向OpenGL的桥 本章主要是为以后进行的OpenGL编程进行一些铺垫工作.主要内容有:Open ...

  3. UVA 10229 Modular Fibonacci

    斐波那契取MOD.利用矩阵快速幂取模 http://www.cnblogs.com/Commence/p/3976132.html 代码: #include <map> #include ...

  4. 安全提示“X-Frame-Options头未设置”的解决方法

    漏洞检测提示“X-Frame-Options头未设置”,意思是网页可能被别人用iframe框架使用.事实上,我的网页已经通过js程序禁止被iframe框架嵌入使用了.不过,对于使用iis的网站来说,可 ...

  5. (3) python--matplotlib

    (一)1.如何绘制散点图 import numpy as np import matplotlib.pyplot as plt # 如何绘制散点图 # 先随机生成数据 x = np.array(ran ...

  6. AC日记——最小正子段和 51nod 1065

    最小正子段和 思路: 找最小的大于0的sum[j]-sum[i](j>i): 高级数据结构(splay)水过: 来,上代码: #include <cstdio> #include & ...

  7. ios控件渐变色的处理

    +(CAGradientLayer *)gradientColorWithBounds:(CGRect)bounds startColorHexString:(NSString *)startColo ...

  8. 利用ItextSharp产PDF完整操作

    记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题.客户的主机不愿意安装excel, 这时我才意识到用自带组件完全是不行的 ...

  9. Reporting Service报表水印的添加

    上一篇文章寫到了自帶報表的製作,現在來談談報表水印的添加 1:水印產生代碼 using System; using System.Data; using System.Configuration; u ...

  10. POJ 1862 Stripies【哈夫曼/贪心/优先队列】

    Stripies Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 18198   Accepted: 8175 Descrip ...