SWFLoader在空中项目中工作,但不在Web项目中工作

时间:2017-04-20 20:24:40

标签: actionscript-3 flex

我一直在Flash构建器中开发Web类型Flex项目。在这个项目中,我一直在尝试使用SWFLoader加载swf文件。我无法让调试器工作,所以我创建了一个相同的Air项目,我可以运行和调试(我用脚本保持最新)。我已经成功地在我的Air项目中加载了swf文件而没有任何问题。但是,当我在我的Web项目中测试它时,SWFLoader似乎不起作用,我只是得到一个空白区域,我的SWFLoader元素应该显示加载的swf文件。

private function get_swf_file_binary_amf(event:ResultEvent):void {
            Alert.show("SWF Returned");
            var decoder:Base64Decoder=new Base64Decoder();
            decoder.decode(event.result);
            var swf_bytes:ByteArray=decoder.toByteArray();

            var context:LoaderContext=new LoaderContext();
            context.allowLoadBytesCodeExecution=true;
            context.parameters = {myval: "test_string"};

            swf_loaded_file.loaderContext = context;
            swf_loaded_file.addEventListener(Event.COMPLETE, loadComplete);
            swf_loaded_file.load(swf_bytes);
        }

private function loadComplete(completeEvent:Event):void{
    trace("load Complete")
}

以上是我的Adobe Air项目中的代码。我收到了我的swf文件的二进制数据并将其转换为ByteArray,而不是像许多示例建议的那样使用URLLoader。当我尝试在我的Web项目中运行它时,这可能是我的问题的原因吗?

编辑/更新:我找到了Web项目失败的特定行: context.allowLoadBytesCodeExecution=true;

我仍然不确定为什么我的网络项目不喜欢这条线,但我的Air项目并不关心。

1 个答案:

答案 0 :(得分:1)

我删除了被诅咒的行:

context.allowLoadBytesCodeExecution=true;

这似乎解决了这个问题。我甚至不太确定这行是什么,我刚刚从一个教程中完成了它。摆脱它并没有打破任何在我的Air项目中工作的东西,所以我认为这解决了我的问题。