将SWF动画嵌入AS3项目中的特定位置

时间:2013-02-21 03:30:56

标签: actionscript-3 flash embed

我正在AS3中做一个项目(没有外部库或Flex),我需要在它被销毁时在一个tile上嵌入一个爆炸动画。我有一个小爆炸动画,但我不知道如何让它在特定的位置播放。有没有办法做到这一点?我试过像这样嵌入它:

[Embed(source="../assets/64x48.swf", mimeType="application/octet-stream")] private var Explosion:Class 
var explosion:MovieClip;
explosion = new Explosion();
explosion.play();

但这似乎没有做任何事情。如果不是SWF,我也有一个我可以使用的爆炸精灵表,但我不知道如何在不使用外部库的情况下为精灵设置动画。

1 个答案:

答案 0 :(得分:0)

在您想要播放的swf Movieclip中进行操作,您必须执行以下操作。 swf转换为bytearray后,必须恢复。

修改

我检查了你的swf文件。但是,您的swf文件内容不是MovieClip,而是AVM1Movie文件。所以直接嵌入是很困难的。因为AVM1Movie文件转换为MovieClip算法。但别担心使用ForcibileLoader很容易获得。

下载ForcibileLoader

原始ForcibileLoader here

参考以下代码。我测试了很棒的作品。

package
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.utils.getTimer;

    import org.libspark.utils.ForcibleLoader;

    public class TestProject2 extends Sprite
    {
        private var loader:Loader = new Loader();
        private var mc:MovieClip;

        public function TestProjec2t()
        {
            var fLoader:ForcibleLoader = new ForcibleLoader(loader);
            fLoader.load(new URLRequest("../asset/64x48.swf"));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSwfLoaded);
            this.addChild(loader);
        }

        private function onSwfLoaded(e:Event):void 
        {
            trace(e.currentTarget.content);
            mc = e.currentTarget.content as MovieClip;
            mc.x = Math.random() * stage.stageWidth;
            mc.y = Math.random() * stage.stageHeight;
            mc.gotoAndPlay(1);
        }
    }
}