Flex:如何在导入的swf中访问动画片段

时间:2010-05-06 16:22:28

标签: flex import flash movieclip

我已将swf(不是使用Flex创建,即非框架)导入Flex应用程序。加载后,我想访问该导入的swf中的movieclips。看看Adobe的文档(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>

2 个答案:

答案 0 :(得分:0)

是否使用早期的AS版本创建了test.swf?根据{{​​3}}发布的针对AS 1.0 / 2.0的swfs在与AS 3不同的AS虚拟机中运行。

  

父AVM2 SWF文件不会有   访问属性,方法或   加载的AVM1Movie的对象   对象

答案 1 :(得分:0)

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

private function swfLoaded():void {
    var clip1:MovieClip = MovieClip(loader.content.myClip1);
    var clip2:MovieClip = MovieClip(loader.content.myClip2);
    // ...
}