我一直在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项目并不关心。
答案 0 :(得分:1)
我删除了被诅咒的行:
context.allowLoadBytesCodeExecution=true;
这似乎解决了这个问题。我甚至不太确定这行是什么,我刚刚从一个教程中完成了它。摆脱它并没有打破任何在我的Air项目中工作的东西,所以我认为这解决了我的问题。