我在尝试将MovieClip嵌入到我在FlashBuilder中编写的ActionScript文件时遇到了麻烦。
public class ItRock extends Item
{
public static const ID:String = "rock";
[Embed (source="/../art/menu/console.swf", symbol="itRock")]
private var IconClass:Class;
public function ItRock(game:Game)
{
super(ID, game);
var icon = new IconClass();
// var icon : MovieClip = new IconClass();
// var icon : MovieClip = new IconClass() as MovieClip;
addChild(icon);
}
}
我的console.swf文件包含一个名为itRock的符号,其类型为MOvieClip,并设置为Export for ActionScript。在我的代码中,我想创建一个这个符号的实例,并将其添加为我的Item类(扩展Sprite)的子代。但是,当我创建嵌入类的实例时,我创建了一个类型名为console_swf $ 831ea9c30fe7882fadc388b74e115654-652499362的对象。我可以将它作为一个小孩添加,但如果我试图隐式地将它强制转换为MovieClip,我会得到一个无法转换为MovieClip的错误。如果我尝试显式转换,我只是得到null。
知道我在这里做错了吗?
答案 0 :(得分:0)
好的,看起来Flash会自动将您的MovieClip转换为Sprite。因此,如果我将MovieClip类更改为Sprite,我的上述代码将起作用。
以下网站对此进行了描述。它建议在你的符号中添加一个额外的框架会强制Flash被视为一个MovieClip,而不是一个Sprite - 但是,我创建了一个简单的两帧动画,它仍然作为一个Sprite导出。 (它甚至播放动画 - 我认为Sprites应该只是没有动画的静态图像?)
http://chrismweb.com/2011/03/20/problems-with-embedding-swfs-in-actionscript-or-flex/