SWF装载机& Flex的SWFLoader:子SWF沙盒策略

时间:2010-01-07 18:38:03

标签: flash actionscript-3 actionscript sandbox

参考:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Loader.html

关于通过Loader类加载子SWF的父SWF,是否可以阻止加载的子SWF:

  • 进行任何网络通话,或
  • 拨打特定域名

基本上,我正在寻找allowNetworking的程序化版本:http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001079.html

的方法,另外,

  1. 是否存在任何Flash Player版本和Actionscript版本差异?
  2. 如果使用Flex的SWFLoader,是否有任何差异?
  3. 非常感谢,

    杰夫

1 个答案:

答案 0 :(得分:1)

简单的答案是“不,你不能”。这是因为您无法隐藏或替换播放器的内置功能。理论上,您可以通过检查SWF的DoABC块并查找对URLLoader或navigateToURL等的调用来阻止许多此类调用。当然,不可能找到它们中的每一个,因为那些可以通过反射来调用。此外,你必须编写一个反编译器来做到这一点。

  1. ActionScript的版本历史非常短,只有1.0,2.0和3.0。 Flash Player不执行ActionScript。它执行字节码(ABC - A ctionScript b yte c ode)。除持续维护外,ABC格式几乎没有变化。最重要的是反映在ABC格式规范中。因此,例如,在Flash Player 10中添加了一组操作码“Alchemy opcodes”,然而,它们对于在AS3中编写的程序员来说是不可用的。我正在使用此http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html作为快速参考,但它有点过时了。

  2. SWFLoader是您在处理Flex框架时要使用的类。它本质上是Loader类,扩展用于处理内置函数引入的框架问题。