Flex将SWF加载为Sprite。如何将其作为Movieclip加载?

时间:2009-05-25 10:45:48

标签: flex casting movieclip swfloader

我在将SWFLoader.content转换为MovieClip实例时遇到问题,同时关注(TheFlashCanon's excellent tutorial)使SWF与Flex通信。有问题的SWF使用Flash CS3编译(使用actionscript 3)。

但是,当我尝试获取SWFLoader的内容并将其转换为MovieClip实例时,我总是会收到此错误:

  

TypeError:错误#1034:输入强制   失败:无法转换   maix :: main_maix @ 49f94ec1 to   的flash.display.MovieClip。在   TEST1 / onLoadMinigameComplete()[/用户/ chiyin /文档/ Flex的   生成器   3 / SimpleGirlfriend / SRC / Main.as:68]

其中maix :: main_maix @ 49f94ec1是我电影的一个实例。

我做错了什么?加载的swf否则会正常播放,并且不表示为AVM1Movie。

更新:发现SWF是作为Sprite而不是Movieclip导入的。如何强制SWFLoader将SWF加载为Movieclip而不是Sprite对象?

2 个答案:

答案 0 :(得分:0)

main_maix看起来是正在加载的swf的文档类。如果是这样,main_maix应该扩展MovieClip而不是Sprite

public class main_maix extends MovieClip 

此外,您始终可以将类转换为对象以便能够自由访问它(但这不是一个非常好的做法)。您可能只想“将其强制转换为main_maix”:

/**
 * Loader finished loading
 * 
 * @param Event Complete event
 * @return void
 */
private function onLoadMinigameComplete(event:Event):void 
{
    // -- either will allow "free access" to methods of main_maix
    var maixAsObject:Object = Object(loader.content);
    var maixAsMaix:main_maix = main_maix(loader.content);
}

答案 1 :(得分:0)

我不知道动态加载的swfs是否相同。但是如果你在Flash Authoring环境中制作一个movieclip,它只有一个帧。然后将其嵌入到Flex应用程序中。它将嵌入为精灵而不是Movieclip。