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ではなくAVM1Movieファイルです。そのため、直接埋め込むことは非常に困難です。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 に答える