我的 Flash (AS3/AIR) 应用程序目前使用一种稍微不寻常的架构(对于 Flash 应用程序)来为运行时加载的内容提供特定的基类。外部内容是使用“存根”基类发布的,在加载时会在运行时被“真实”基类所掩盖。我听说这被 Adobe 称为bootstrapping ( pdf ),直到现在它对我来说一直运行良好。我相信它与 DLL 架构没有什么不同,尽管我没有资格肯定地说。
到目前为止,我一直在加载的外部内容是从同一个SecurityDomain
(同一个沙箱)中加载的,这使我可以轻松地将内容加载到 childApplicationDomain
中。不幸的是,据我所知,ApplicationDomain
跨度SecurityDomain
s 的 s 不能相关 - 也就是说,我不能使一个 SecurityDom 的 AppDom 成为另一个 SecurityDom 的 AppDom 的子项。
但现在我需要从我的应用程序沙箱外部加载这些外部内容。有很多方法可以实现跨SecurityDomain
s 的通信——尽管其中大多数都非常有限,但 AIR 的sandboxBridge
API 可能是最强大的。不幸的是,这些通信方法都不允许我实现这种引导架构。
我注意到该LoaderContext
对象有一个securityDomain
属性,但 Flash 安全性禁止“本地 swfs”触摸它(它会抛出一个SecurityError
或类似的)。
Flex'sSWFLoader
有一个trustContent
看起来很有希望的属性,但我倾向于假设它与SecurityDomain
在Loader
's中设置的限制相同LoaderContext
。
我怀疑我将不得不重新设计(这并不容易),但我想我只是在这里检查一下我没有错过我的研究中的任何东西。
那么......任何想法或智慧的珍珠?如果从事安全模型工作的 Adobe 人员能给我一个明确的“是/否,它可以/不能完成”,我会特别喜欢它......
提前致谢!
附录:从那以后,我决定重新设计架构,以便引导全部发生在外部域上。然而,出于好奇,我的问题仍然存在。