通过 Loader 类的 load()
或 loadBytes()
方法将外部文件加载到 Flash Player 或 AIR 中时,可以选择指定 context
参数。此参数是一个 LoaderContext 对象。
LoaderContext 类包括三个属性,用于定义如何使用加载的内容的上下文:
-
checkPolicyFile
:仅当加载图像文件(不是 SWF 文件)时才会使用此属性。如果将此属性设置为 true
,Loader 将检查策略文件的原始服务器(请参阅网站控制(策略文件)
)。只有内容的来源域不是包含 Loader 对象的 SWF 文件所在的域时才需要此属性。如果服务器授予 Loader 域权限,Loader 域中 SWF 文件的 ActionScript 就可以访问加载图像中的数据;换句话说,可以使用 BitmapData.draw()
命令访问加载的图像中的数据。
请注意,来自 Loader 对象所在域以外的其它域的 SWF 文件可以通过调用 Security.allowDomain()
来允许特定的域。(这里的白话文的意思就是加载别的域中的资源像是图片之类的,flashPlayer会先检查别的域中根目录下是否有crossDomain.xml这个文件。如果这个文件里同意你加载,那么就会开始执行load()这个方法。这个时候你的load对象监听的什么progressEvent或者complete事件才会触发。如果没有得到允许就不会触发后面的事件。如果不被允许加载,那么就没有权限使用bitmapdata的draw方法。再者,如果你加载的是一个swf,那么就没有必要有这个crossDomain.xml因为swf的权限允许不是有crossDomain.xml决定的,而已由securityDomain.allowDomain()来决定的。
如果不需要对正在加载的图像进行像素级的访问,则不应将 checkPolicyFile
属性设置为
true
。 在这种情况下不必再检查是否存在策略文件,因为这样会延迟下载的开始时间,并且可能会不必要地占用网络带宽。
如果是使用 Loader.load()
方法下载 SWF 文件,也尽量不要将
checkPolicyFile
设置为 true
。 这是因为 SWF 到 SWF
的权限不是由策略文件控制的,而是由 Security.allowDomain()
方法控制的,因此在加载 SWF 文件时
checkPolicyFile
不起任何作用。 在这种情况下不必再检查是否存在策略文件,因为这样会延迟 SWF
文件的下载,并且可能会不必要地占用网络带宽
)
-
securityDomain
:仅当加载 SWF
文件(不是图像)时才会使用此属性。如果 SWF 文件所在的域与包含 Loader
对象的文件所在的域不同,则指定此属性。指定此选项时,Flash Player 将检查策略文件是否存在,如果存在,来自跨策略文件中允许的域的
SWF 文件可以对加载的 SWF 内容执行跨脚本操作。可以将 flash.system.SecurityDomain.currentDomain
指定为此参数。如果不指定的话,就会通过
Security.allowDomain()
方法检查是否有权限。
-
applicationDomain
:仅当加载使用 ActionScript 3.0 编写的 SWF 文件(不是图像或使用 ActionScript 1.0 或 2.0 编写的 SWF 文件)时才会使用此属性。加载文件时,通过将 applicationDomain
参数设置为 flash.system.ApplicationDomain.currentDomain
,可以指定将该文件包括在与 Loader 对象相同的应用程序域中。通过将加载的 SWF 文件放在同一个应用程序域中,可以直接访问它的类。如果要加载的 SWF 文件中包含嵌入的媒体,这会很有帮助,您可以通过其关联的类名访问嵌入的媒体。有关详细信息,请参阅使用 ApplicationDomain 类
。(这个属性有很多的用途,他的用途就是管理不同的类。将不同的资源加载到不同的程序域中。我们一般会使用当前域和程序子域)
下面的示例在从另一个域加载 SWF 时检查策略文件,以便将该文件与 Loader 对象放在同一个安全沙箱中。此外,该代码还将加载的 SWF 文件中的类添加到与 Loader 对象的类相同的应用程序域中:
var context:LoaderContext = new LoaderContext();
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);
下面的示例在从另一个域加载位图时检查策略文件:
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);
分享到:
相关推荐
在计算机科学领域,汇编器(assembler)与加载器(loader)是构建软件系统不可或缺的组成部分。从早期的大型机到现代的个人电脑、服务器乃至移动设备,这些工具扮演着将人类可读的程序代码转换为机器指令,以及将...
AMD规范下的模块加载工具就是这样的包管理器之一,它使得开发者能够按照模块化的思想编写代码,每个模块都有自己的作用域,避免了全局变量污染,同时支持动态加载,提高页面性能。 `loader.js-master`这个压缩包很...
通常,加载的SWF文件会位于不同的安全域中,这可能会影响它们之间的交互。因此,你可能需要设置`LoaderContext`来允许跨域通信,或者在SWF头部添加`AllowScriptAccess`标记。 总的来说,Flex控制SWF的过程涉及到...
- **图形图片格式**:包括JPG、PNG、GIF等格式的图像文件,可以通过`flash.display.Loader.load()`方法加载。 - **音频文件**:如MP3格式的音频文件,可以通过`flash.media.Sound.load()`方法加载。 - **视频文件**...
早期的 JavaScript 文件加载通常依赖于 `<script>` 标签,各个模块之间的接口通过全局作用域暴露,容易引发变量冲突,且加载顺序受限。为了解决这些问题,出现了 CommonJS 和 AMD 规范。 1. CommonJS 规范: 主要...
3. **子ApplicationDomain**:可以通过`new ApplicationDomain(parent)`来创建一个新的`ApplicationDomain`,这里的`parent`参数指定了新`ApplicationDomain`的父域。 #### 三、ApplicationDomain与安全沙箱的关系 ...
在这个例子中,创建了一个新的`AppDomain`,名为"ApplicationLoader",用来隔离加载的DLL,以防止对主程序域的影响。 2. `AppDomainSetup`:这是配置新`AppDomain`的对象,设置了如应用基目录、私有程序集路径、...
1. 加载外部图档:使用Loader类加载图像文件,然后将其内容转换为BitmapData对象。 2. 初始化波浪参数:设置波浪的高度、频率、速度等参数,这些参数将影响波浪的外观和动态行为。 3. 应用扭曲算法:遍历BitmapData...
BOOT LOADER是嵌入式系统启动的第一段程序,它负责初始化硬件、加载操作系统或应用程序到内存中。在AXM6800X系统中,"Boot Loader"文件可能包含: 1. 上电自检(POST):检查硬件是否正常工作。 2. 存储器初始化:...
`css-loader` 支持多个参数来定制其行为,比如 `modules`,它用于启用 CSS 模块化,使得 CSS 类名具有局部作用域,避免命名冲突。例如: ```javascript use: [ 'style-loader', { loader: 'css-loader', ...
可以使用Cocos Creator的`cc.loader`加载JSON或XML格式的数据,然后通过组件系统动态渲染排行榜界面。 2. **JavaScript(JS)实现**: - 在JS中,使用`wx.request`设置URL、HTTP方法、请求头和数据。例如: ``` ...
以下是对路由器启动的详细解释: 1. **POST(Power On Self Test)**: - POST是路由器加电后的第一步,它会对CPU、内存、接口和其他硬件组件进行检查,确保它们的功能正常。如果在POST期间检测到任何硬件故障,...
- **expand([deep], [anim], [callback], [scope])**: 扩展一个节点,可选参数控制是否深入展开所有子节点,是否使用动画效果,以及回调函数和作用域。 - **expandPath(path, [attr], [callback])**: 扩展指定路径...
- `style-loader` 和 `css-loader`:Webpack加载器,处理CSS导入。 - `jest` 和 `enzyme`:测试框架,用于单元测试和集成测试React组件。 总的来说,`redux-webpack-es6-boilerplate` 是一个强大的起点,它将React...
当ISA网卡不能自动检测时,可以在此文件中添加启动参数,通过LILO(Linux Loader)传递给内核。例如,使用`ether`指令指定网卡的物理地址。 5. **/etc/resolv.conf**: 这个文件是DNS解析器的配置文件,用于定义...
10. **柯里化(Currying)**:柯里化是将接受多个参数的函数转化为接受单个参数并返回新函数的技术,新函数每次接受一个参数直到所有参数都被传入。 11. **JSON.stringify()**:该方法将 JavaScript 值转换为 JSON ...
要运行这个项目,你需要安装Tensorflow和其他相关库,并根据项目提供的说明配置数据集路径和训练参数。通过这个轻量级的实现,你可以了解和实践Pix2Pix模型,同时也能探索条件对抗网络在图像生成任务中的应用。
1. let和const是块级作用域变量声明,而var是函数作用域。 2. 反引号`用于模板字符串,可以进行多行文本和字符串插值。 3. 函数默认参数提供函数参数默认值。 4. 箭头函数提供一种更简洁的函数写法。 5. 属性简写和...
- 高阶函数:函数作为参数传递、返回函数、柯里化、偏函数。 3. ES6新特性: - 解构赋值:用于数组和对象的快速赋值。 - 声明与初始化:let、const的块级作用域。 - Class与继承:类的定义、原型链、super...