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

问题描述:

我已经将swf(不是用Flex创建的,即非框架)导入到Flex应用程序中。一旦加载,我想在导入的swf中访问movieclip。看看Adobe的文档(http://livedocs.adobe.com/flex/3/html/help.html?content=controls_15.html),它看起来很直接;然而,他们的例子是在Flex应用程序和导入的swf(使用Flex创建的)之间进行的。Flex:如何访问导入的swf中的动画片段

就像他们的例子,我试图使用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> 

当时test.swf与先前创建的AS版本?根据已公布的1.0/2.0运行在不同的虚拟机比为3

The parent AVM2 SWF file will not have access to the properties, methods, or objects of the loaded AVM1Movie object.

+0

它是在过去一年内用AS3创建的。 – squared 2010-05-06 19:03:57

您可以直接访问它们,使用他们的实例名称this主权财富基金。

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

我尝试了以下...(请注意,movieclip /符号被命名为firstFloor,并且movieclip的实例被命名为“firstFloor_mc”,并且movieclip被导出为名为firstFloor的Class。 – squared 2010-05-06 20:22:09

+0

1. var clip1:MovieClip = MovieClip(loader.content.firstFloor);错误:1119:通过静态类型flash.display:DisplayObject访问可能未定义的属性firstFloor

2. var clip1:MovieClip = MovieClip(loader.content.firstFloor_mc );错误:1119:通过带有静态类型的引用访问可能未定义的属性firstFloor flash.display:DisplayObject。 – squared 2010-05-06 20:22:28

+0

第二种方法是正确的,假定剪辑位于舞台的第一帧上,第二个错误消息是相同的作为第一个。复制/粘贴错误,或者你忘了保存文件,当你吨第二种风格呢? :) – 2010-05-06 22:03:46