7

こんにちは、外部 SWF を MovieClip にロードしています。再生を選択するまで停止させたいと思っています。現在、ロードするとすぐに再生されます。

var mc:MovieClip;

var swfLoader:Loader = new Loader();
swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, eventLoaded); 
var request:URLRequest;
request = new URLRequest("external.swf");
swfLoader.load (request);

function        eventLoaded(e:Event): void
{
   mc = e.target.content as MovieClip;
// does not stop the clip
   mc.Stop ();
}

そこで、ムービークリップに Event.ENTER_FRAME を追加してそこで停止しようとしましたが、停止しますが、最初のフレームが再生されます。再生を選択するまでロード時に停止したままにする方法はありますか?

4

3 に答える 3

6

これは実際、ヨッヘン・ヒルガースが示唆したものに非常に近いものです。ただし、この場合、実際に必要なイベントはINITではなく ですCOMPLETEINITコンテンツがまだ完全にロードされていないが、使用する準備が整ったときに起動されます (そして、独自に再生を開始します)。

イベントを添付する

loader.contentLoaderInfo.addEventListener(Event.INIT, handleReady );

そしてそれを扱う

public function handleReady( initEvent:Event ):void{
        MovieClip(initEvent.currentTarget.content).stop();
}

contentのプロパティをMovieClip としてキャストしcurrentTargetて、ステージにアタッチする前でも停止できることがわかります。

イベントで (またはまたはイベントの前に)contentプロパティを使用することは安全ではないことに注意することが重要です。オブジェクトの準備ができていないというエラーが表示されます。PROGRESSINITCOMPLETE

于 2011-04-06T21:20:13.657 に答える
1

この単純な TestCase を書きましたが、問題なく動作します... ロードされた swf は非常に単純で、メイン タイムラインのトゥイーンにすぎません。

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

    public class Test extends Sprite
    {
        private var loader:Loader = new Loader;

        public function Test()
        {
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaded );
            loader.load( new URLRequest( 'testFile.swf' ) );    
        }

        public function handleLoaded( event:Event ):void
        {
            addChild( loader.content );
            var mc:MovieClip = loader.content as MovieClip ;
            mc.stop();
        }
    }
}
于 2010-03-02T18:52:28.800 に答える
0

同様の問題/解決策を探していましたが、私の問題は少し異なりました。これはあなたの問題ではないことはわかっていますが、私の解決策を共有することは公正に見えます. しようとしたら

    event.currentTarget.stop(); // AS1&AS2 -> BAD swf to import

ローダーのコンテンツを使用すると、Flash IDE で次のエラーが表示されました。

「flash.display.AVM1Movie でプロパティ stop が見つからず、デフォルト値がありません。」

これは、インポートした swf がメイン ムービーとして AS3 ではなく AS1 を使用して作成されたためです (そのため、swf を fla に逆コンパイルし、as3 を使用して再コンパイルしました。これは After Effects からの出力でした)。これで、AVM1 と AVM2 が actionscript 1 と 2 のファイルを表すクラスであることがわかりました。

于 2011-06-15T07:16:15.077 に答える