3

FlashProfessionalで作成した.swfアニメーションがあります。アクションスクリプトプロジェクトで使用するために、次のように埋め込みます。

[Embed(source="../lib/fetching.swf")]
public var Fetching:Class;

次に、インスタンスを作成し、次のようにステージに追加します。

//class variable
var mc:MovieClip;

mc = new Fetching();
this.addChild(mc);

これにより、アニメーションが画面に表示され、無期限にループします。ただし、を呼び出すmc.stop()と、アニメーションは停止しません。呼び出してムービークリップをステージから削除しようとしましたremoveChild(mc)が、ENTER_FRAMEイベントにリスナーを追加すると、ムービークリップがまだ何度も再生されていることがわかりました。

4

2 に答える 2

3

埋め込みソースmimeTypeを設定し、ByteArrayに変換する必要があります。とロードされます。型キャストフェッチクラスを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();
        }
    }
}
于 2012-09-02T03:13:52.380 に答える
1

埋め込まれたクリップがAVM2用にコンパイルされていること(つまり、AS1またはAS2ではなくAS3をターゲットにしていること)を確認しましたか?Avm1 swfは、エラーをスローせずにMovieClipにキャストできますが、コマンドに応答しません。

于 2012-09-02T10:59:09.353 に答える