需要澄清应用程序域

2024-04-28

我需要对这个主题进行一些澄清,因为我刚刚遇到将 swf 加载到重用加载器对象中的问题。

假设我有 3 个 SWF。
主文件.swf
childA.swf
childB.swf

Main.swf 中有一个可重用的加载程序对象 (myloader.load("childA.swf")),并且 childA 或 childB swf 将通过用户交互加载。
两个子 swf 都有一个 com 包,该包中有一个名为 config 的类。
这两个类的配置文件是不同的文件,只是名称相同。
两个子 swf 还调度 Main 监听的事件

现在我遇到的问题是,如果先加载 child,然后在加载 child 后,它仍然会显示为 childA。基本上,无论哪一个先加载到加载器中都会获胜。
这让我抓狂,因为我所做的任何事情都不会导致 swf 卸载。直到我发现下面的代码。

var appDomain:ApplicationDomain = new ApplicationDomain();
var context:LoaderContext = new LoaderContext(false, appDomain);
_contentPanel.load(new URLRequest(str), context);

我在某处讨论如何真正卸载 swf 的帖子中偶然发现了这段代码。显然,这也适用于如何真正加载 swf。
正如您所看到的,一个新的 appDomain 被创建并在加载时分配给上下文。
这就像一个梦想,我现在可以整天装卸。

我的困惑是,当我认为主 swf 不应该拾取它时,子级调度仍然有效,因为它不在同一个 appDomain 中。
我的意思是这个活动不应该被阻止吗?


卸载 SWF

Loader 类提供Loader.unload()(或在 Flash Player 版本 10 之后 -Loader.unloadAndStop())

第二个加载的 SWF 被第一个加载的 SWF 覆盖的问题

存储在的对象ApplicationDomains 按其类名存储,我想知道加载的 SWF(或其子级)的类名是否是覆盖的。即使事实并非如此;为什么不为每个正在加载的对象使用 Loader 的新实例?

主 SWF 如何从另一个应用程序域中选取两个子级

主 SWF 将能够使用新的(加载的)应用程序域,因为它们是主 SWF 的子域(请参阅 ApplicationDomain.parentDomain)。主 SWF 的域将是“系统域”,新实例将在其下方加载。

从加载器中分离加载的 SWF

理想情况下,您希望能够访问与 SWF 状态无关的 SWF 数据。Loader。您可以通过在加载后访问 SWF 的根 movieClip 并使用以下命令创建一个新实例来完成此操作

var rootClipClass:Class = ApplicationDomain.getDefinition("[InsertYourRootClipName]") as Class; 
var rootClip:MovieClip = new rootClipClass(); 

那时,您可以卸载加载程序并干净地使用新实例。

进一步阅读

  • Loader.unload() 和 Loader.unloadAndStop() 之间的区别 http://helpx.adobe.com/flash/kb/flash-player-10-action-script.html
  • 使用应用程序域 - Adob​​e Docs http://help.adobe.com/en_US/as3/dev/WSd75bf4610ec9e22f43855da312214da1d8f-8000.html
  • 加载器类参考 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html
  • ApplicationDomain类参考 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/ApplicationDomain.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要澄清应用程序域 的相关文章

  • BlazeDS 与 GraniteDS [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 PhantomJS 中使用 JavaScript 检测网页上的声音?

    我需要检测带有横幅的网页中的所有声音 我怎样才能做到这一点 我查看 PhantomJS 但找不到浏览器声音的 API PhantomJS 1 x 和 2 不支持 Flash
  • 安全沙箱违规

    运行我的 Flash 应用程序时出现以下错误 违反安全沙箱 与 rtmp system ip live 的连接已停止 不允许从 file F Flash 工作 RTS RT vlab BIOTECH NEO 简单神经元的被动属性 vi 特征
  • ActionScript 3 中的圆形滑块

    我希望在 ActionScript 中添加一个圆形滑块 非常类似于这一页 http interface eyecon ro demos drag vr html shows 它最终会改变对象的色调 返回 CMY 值 但如果它只是吐出程度 我
  • 如何在 Flex 中对 PHP 字符串使用换行符

    这是我的 MXML
  • 如何在 Flex 3 中使用 htmlText 作为单选按钮标签

    我需要在 Flex 3 中为单选按钮显示一些粗体单词 如下所示 选项 1 你好world 选项2 Hello world 我看到单选按钮的标签没有 htmlText 属性 有人对完成这个要求有什么建议吗 Thanks Anji 蒂莫菲 达维
  • Actionscript 3主类是根,但不允许动画虚拟相机

    我最近开始使用 Actionscript 3 学习 Animate CC 我正在尝试使用 Animate 的 虚拟相机 功能 为我提供一个可以平移 旋转和缩放游戏的相机 当根没有子类时 很容易实现 Camera 例如 您可以在屏幕上放置一个
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • 在 Mac OS X (Mavericks) 上的 Adob​​e AIR 中的两台显示器上显示两个全屏窗口

    我使用的是 Mac OS X Mavericks 使用 Adob e AIR 我想在两个显示器 内置笔记本电脑视网膜显示器和外部 HDMI 显示器 上分别显示单独的全屏窗口 我可以在主显示器上获得全屏窗口 在辅助显示器上获得几乎全屏的窗口
  • flash/flex:渐进式下载与 rtmp

    我试图理解并真正确定何时在 Flex flash 中使用渐进式下载与 rtmp 看来主要的一点是 rtmp 不与 http 一起提供服务 而渐进式下载则由 http 提供 由于它不是 rtmp 因此资源受到保护 因为无法从 swf 外部连接
  • 如何通过使用内置的 Date 类来节省时间?

    这个问题的目的是使用内置的 Date 类收集日期 时间计算的解决方案 而不是编写冗长的复杂函数 我会自己写一些答案 如果有人想出一些非常聪明的东西 我会接受答案 但这主要是作为解决方案的集合 因为我经常看到处理日期的代码过于复杂 请记住这是
  • 换肤时访问 hostComponent 的自定义属性 - Flex 4.5、SDK 4.5

    使用 SDK 4 1 我能够从自定义皮肤访问自定义按钮组件的自定义属性 我当前正在工作的项目需要 SDK 4 5 但我无法访问这些属性 这是一个例子 自定义按钮组件
  • 更改 AS3 中的 TextField 选择颜色

    如何更改 ActionScript 3 中 TextField 的选择 突出显示 颜色 我有一个输入文本字段 黑色背景上有白色文本 因此 选择是不可见的 这对于可用性来说非常糟糕 谢谢 另一种方法是使用文本布局框架 特别是使用 Select
  • Flex 垂直数据网格

    我可以有一个垂直而不是水平显示数据的数据网格吗 例如 如果这是我的数据提供者 array firstname John lastname Doe array firstname Jack lastname Jill 我希望数据显示如下 Fi
  • Flex 字典字面量

    在 Flex 中工作 我需要用相当复杂的结构填充字典 基于本文档页面 http livedocs adobe com flex 3 html help html content 10 Lists of data 4 html我尝试通过以下语
  • Actionscript 对象的属性数量

    如何获取通用 Actionscript 对象中的属性数量 如数组长度 您必须循环所有元素才能对它们进行计数 function objectLength myObject Object int var cnt int 0 for var s
  • 闪存和 CORBA

    如何让 AS3 和 或 Flex AIR 应用程序与 CORBA 应用程序进行通信 在有人为 Flex 编写符合 CORBA 的库 您可能愿意自己做 之前 您最好的选择可能是构建一个充当桥梁的 包装器 Web 服务 可通过标准 Flex W
  • 我应该等待 Flash Player 10.1 还是使用 Flash Lite 3 来为手机和设备开发 Flash 内容

    Adobe 将在 2010 年第一季度推出 Flash Player 10 1 这将在桌面和移动设备上提供一致的运行时 因此我假设如果它是为 Web 构建的 那么它也可以在移动设备上运行 我即将开始为手机开发基于 Flash 的应用程序 我
  • 为什么反编译swf文件时jpexs工具不起作用?

    有人知道如何反编译 SWF 文件吗 我尝试过 JPEXS 和 Sothink SWF Decompiler 但不起作用 我把这个 swf在这个link https drive google com file d 1ehHprPOqR0QnR
  • 有没有一个工具可以自动追踪未使用的代码

    我目前有 6 个不同的 Flex 应用程序 小部件 在主页上运行 它们都依赖于一个公共库项目 我目前正在非常大幅度地清理代码库 并且很难以这种方式保持概览 特别是因为我继承了代码库 有谁知道有一个工具可以自动通知我任何死代码 Cheers

随机推荐