2

在遵循( TheFlashCanon 的优秀教程)使 SWF 与 Flex 通信时,我在将 SWFLoader.content 转换为 MovieClip 实例时遇到问题。有问题加载的 SWF 是使用 Flash CS3(使用 actionscript 3)编译的。

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

TypeError:错误 #1034:类型强制失败:无法将 maix::main_maix@49f94ec1 转换为 flash.display.MovieClip。在 test1/onLoadMinigameComplete()[/Users/chiyin/Documents/Flex Builder 3/SimpleGirlfriend/src/Main.as:68]

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

我究竟做错了什么?加载的 swf 可以正常播放,并且不表示为 AVM1Movie。

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

4

2 回答 2

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);
}
于 2009-05-25T17:59:33.853 回答
0

我不知道这对于动态加载的 swfs 是否相同。但是,如果您在 Flash 创作环境中制作影片剪辑,并且它只有一个帧。然后将其嵌入到 Flex 应用程序中。它将作为精灵而不是影片剪辑嵌入。

于 2009-06-01T19:52:26.103 回答