我有一个我在Flash Professional中创建的.swf动画。要在我的actionscript项目中使用它,我将其嵌入如下:
[Embed(source="../lib/fetching.swf")]
public var Fetching:Class;
然后我创建一个实例并将其添加到舞台中,如下所示:
//class variable
var mc:MovieClip;
mc = new Fetching();
this.addChild(mc);
这会导致我的动画出现在屏幕上并无限循环。但是,在调用mc.stop()
时,动画不会停止。我试过通过调用removeChild(mc)
从舞台上删除movieclip,但在ENTER_FRAME事件中添加一个监听器告诉我,movieclip仍在反复播放。
答案 0 :(得分:3)
您应该设置一个Embed source mimeType,然后转换为ByteArray。并加载。因为你不能直接输入Casting Fetching Class到MovieClip。如果您明确定义mimeType并强制转换,那么您将获得TypeError #1034: Type Coercion failed: cannot convert YourProject_Fetching@108b780d1 to flash.display.MovieClip
参考以下代码。
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.ByteArray;
public class TestProject extends Sprite
{
[Embed(source="../lib/fetching.swf", mimeType="application/octet-stream")]
public var Fetching:Class;
public var loader:Loader = new Loader();
private var mc:MovieClip;
public function TestProject()
{
loader.loadBytes( new Fetching() as ByteArray );
loader.contentLoaderInfo.addEventListener(Event.INIT, onSwfLoaded);
this.addChild(loader);
}
private function onSwfLoaded(e:Event):void
{
mc = loader.content as MovieClip;
mc.stop();
}
}
}
答案 1 :(得分:1)
您是否检查过确定嵌入的剪辑是否为AVM2编译(即它是否针对AS3而不是AS1或AS2)? Avm1 swf可以在不抛出错误的情况下强制转换为MovieClip,但不会响应命令。