使用SWFLoader加载Flex应用程序时播放器崩溃

时间:2012-10-11 21:41:25

标签: flex flex4 flash

我有一个非常简单的Flex 4应用程序,mxml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  xmlns:s="library://ns.adobe.com/flex/spark"
  xmlns:mx="library://ns.adobe.com/flex/halo"
  minWidth="400" minHeight="300">
  <fx:Script>
      <![CDATA[
          import mx.controls.Alert;

          public function Execute(foo:Object):void {
              Alert.show("Hello World");
          }
      ]]>
  </fx:Script>
</s:Application>

我正在使用flex/bin/mxmlc file.mxml进行编译。

在另一个Flex应用中,我尝试使用SWFLoader加载上面的应用,并运行Execute功能。它的代码类似于:

var swfLoader:SWFLoader = ...;
// on load, run the below
var loadedSM:SystemManager = SystemManager(swfLoader.content);
var loadedApp:Object = loadedSM.application;
loadedApp.Execute(this);

浏览器可以很好地加载外部应用程序,但是当SWFLoader加载内部应用程序时,外部应用程序崩溃/卸载:浏览器窗口变为白色。

在Flash Player的调试日志中,这就是我所看到的:

VerifyError: Error #1053: Illegal override of getElementNearestScrollPosition in spark.layouts.HorizontalLayout.

ReferenceError: Error #1065: Variable ImageSkin__embed_mxml_Assets_swf___brokenImage_818059060 is not defined.

ReferenceError: Error #1065: Variable _0c91adc980e321d1cb58dff2b8f06798859d4954576f5b2afe24ac0f6c486f60_flash_display_Sprite is not defined.

有任何指针吗?

1 个答案:

答案 0 :(得分:0)

在应用程序中,您使用spark:ModuleLoader加载火花模块或应用程序(spark:Module或spark:Application)。这会处理依赖关系以及加载过程。