是否可以通过使用SWFLoader动态加载的影片访问在主机应用程序中声明的静态字段

时间:2009-05-02 03:54:02

标签: flex flash actionscript-3 flex3

是否可以通过动态加载的影片访问主机中声明的静态字段(前提是加载的影片来自完全受信任的域)。

我主要担心的是确保我们不会将数据暴露给加载的swf,但仍希望仍然监听由加载的swf触发的事件(通过托管应用程序回调函数)。


更新

SWFLoader(用于flex)和Loader(flash)确实有所不同。 SWFLoader包装Loader,但是在Flex API 3.2(或3.3?)之前,你似乎无法直接访问加载器 contentLoaderInfo ,它被用作加载的swf的loaderInfo的链接而无需访问首先是主机swfloader的content属性。在Flex 3.3中,他们在SWFLoader.swfBridge上引入了一个属性(查看源代码)公开了嵌套Loader的contentLoaderInfo.sharedEvents对象。

但似乎还有一个问题:swfBridge(在event.COMPLETE上)似乎是空的?

那么我们如何获得主机SWFLoader的contentLoaderInfo.sharedEvents对象呢?

1 个答案:

答案 0 :(得分:1)

如果您是应用程序A.swf从另一个域加载文件B.swf,并且在B.swf的域上有一个跨域策略文件,允许A.swf访问B.swf的内容,是的 你可以访问B.swf中的所有内容,包括静态字段。您可以使用TextSnapshot类阅读这些内容。

如果您希望A.swf从其他域加载B.swf,但不希望A.swf能够访问B.swf的内容,只是不允许它,就像事件一样,我记得有一种叫做SharedEvents的东西。我很幸运,还不需要这个,但我记得在Essential Actionscript 3.0中读过这篇文章。关于安全问题有一个无聊的章节。对不起,我无法提供更具体的例子,因为我没有回应我的个人经历。

古德勒克!