1

我已经将一个 swf(不是用 Flex 创建的,即非框架)导入到 Flex 应用程序中。加载后,我想访问该导入的 swf 中的影片剪辑。查看 Adob​​e 的文档(http://livedocs.adobe.com/flex/3/html/help.html?content=controls_15.html),看起来很简单;但是,他们的示例介于 Flex 应用程序和导入的 swf(使用 Flex 创建)之间。

像他们的例子一样,我正在尝试使用 SystemManager 访问导入的 swf 的内容;但是,我收到以下错误:

TypeError:错误 #1034:类型强制失败:无法将 flash.display::MovieClip@58ca241 转换为 mx.managers.SystemManager。

发生此错误是因为我将非框架 swf 导入到框架 swf 中吗?提前感谢您的任何帮助。

代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:SWFLoader source="assets/test.swf"  id="loader"  creationComplete="swfLoaded()" /> 

<mx:Script>
 <![CDATA[

  import mx.managers.SystemManager;

  [Bindable]
        public var loadedSM:SystemManager;


  private function swfLoaded():void 
  { 
   loadedSM = SystemManager(loader.content);
  } 
 ]]>


</mx:Script>
</mx:Application>
4

2 回答 2

0

test.swf 是用更早的 AS 版本创建的吗?根据这个为 AS 1.0/2.0 发布的 swfs 在与 AS 3 不同的 AS 虚拟机中运行。

父 AVM2 SWF 文件将无权访问加载的 AVM1Movie 对象的属性、方法或对象。

于 2010-05-06T17:31:09.317 回答
0

您可以使用它们的实例名称直接访问它们。

private function swfLoaded():void {
    var clip1:MovieClip = MovieClip(loader.content.myClip1);
    var clip2:MovieClip = MovieClip(loader.content.myClip2);
    // ...
}
于 2010-05-06T17:33:58.513 回答