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



我有一个非常简单的 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.

有什么指示吗?

在应用程序中,您可以使用 spark:ModuleLoader 加载 Spark 模块或应用程序(spark:Module 或 spark:Application)。这将处理依赖项以及加载过程。

最新更新