第三方外部瑞士法郎需要哪些限制/变通办法

时间:2009-06-19 22:58:35

标签: flex flash actionscript air

我们正在将外部swf内容加载到adobe air应用程序中。内容由越来越多的第三方提供。

作为第三方内容,它将被加载到一个单独的安全域(trustContent = false)和一个兄弟应用域(loadForCompatibility = true)中。我们正在使用Loader类进行此操作。

使用swf作为外部内容时会出现问题的功能/选项/方法有哪些?

我对任何类型的问题感兴趣,因为我们已经重现了内容的问题,无论其加载的应用域/安全域是什么(也出现在Loader和SWFLoader中)。

我们非常感谢这些问题的解决方法,特别是那些可以从主应用程序中应用的解决方法。

2 个答案:

答案 0 :(得分:1)

令人讨厌的大问题(我们已经处理了很多问题!)是外部SWF根本无法直接信任的事实。永远。这使得它们与基础AIR应用程序之间的通信充其量是最困难的。

基于通过URLLoader加载SWF的数据,然后从中获取字节数并将其泵入Loader,存在一个黑客攻击。但是,我相信使用AIR 1.5.1杀死了黑客。

话虽这么说,可以通过Adobe称为沙盒桥的方式在AIR应用程序和加载的SWF之间进行通信。但是,设置沙箱桥是一种巨大的痛苦,任何复杂的数据(对象,甚至像数组一样简单)都会被剥离到桥的另一侧的通用对象,并且不能被转换回原始形式。

对于我们最近需要使用桥梁的项目,我们创建了一个名为AIRBridge的专业类,您可以在桥梁的两侧使用它,这有助于正确设置所有内容。如果您有兴趣,可以从我们的Google代码项目Automata-Tools中提取当前来源。

答案 1 :(得分:0)

我们已经解决了一个问题:

  • 外部swf阶段之外的内容显示在应用程序中,当设置将显示的大小时,将考虑后台元素。 解决方法:在主应用上添加掩码,以隐藏外部内容。使用.content.width / height(完整的offstage元素)和.content.loaderInfo.width / height(原始舞台大小)来计算缩放内容的数量,以便原始舞台与可见区域匹配。