我在将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对象?
答案 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。