嵌入式.swf动画在stop()调用时没有停止?

时间:2012-09-02 02:36:24

标签: actionscript-3 flash actionscript

我有一个我在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仍在反复播放。

2 个答案:

答案 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,但不会响应命令。