0

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

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

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

4

1 回答 1

0

在您要播放的 swf 影片剪辑中的方法,您必须执行以下操作。swf转换为bytearray后,必须恢复。

编辑

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

下载一个ForcibileLoader

原始的 ForcibileLoader在这里

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

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);
        }
    }
}
于 2013-02-21T03:38:27.810 回答