在air app中加载嵌入式swf文件的问题

时间:2014-01-28 07:05:42

标签: android actionscript-3 flash air

我有一个使用flash cs 5.5创建的游戏文件。我有另一个swf文件,它是我在该游戏文件中嵌入的提示文件。它在PC上工作正常。当我尝试使用嵌入式swf文件加载该游戏文件时出现问题。我收到以下错误: SecurityError:错误#3226:当LoaderContext.allowCodeImport为false时,无法导入SWF文件。谁能告诉我为什么会这样呢?

2 个答案:

答案 0 :(得分:3)

我想你在Android设备上使用adobe air for mobile。在air for mobile中,加载外部SWF文件有额外的限制 - 特别是当它们包含字节代码(ActionScript)时。由于您的辅助SWF文件包含自己的动作脚本代码,因此如果没有明确的安全限额,则无法加载到您的移动空中应用程序中。

AS3在实例化引用嵌入式SWF文件的类时隐式使用Loader,并使用默认选项加载 - 在移动运行时环境中设置为不同的选项。

您可以通过手动加载来加载它们,方法是自己创建LoaderLoaderContext个实例。

var ldr:Loader = new Loader();
var lc:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
lc.allowCodeImport = true;
ldr.load(new URLRequest("YOUR_FILE_PATH"), lc);

另请注意,在iOS中,即使allowCodeImport设置为true,也无法以任何方式加载带代码的外部SWF。

有关详细信息:http://blogs.adobe.com/airodynamics/2012/11/09/packaging-and-loading-multiple-swfs-in-air-apps-on-ios/

答案 1 :(得分:1)

尝试这种情境:

var loaderContext: LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true; 
swfLoader.loaderContext = loaderContext;