2

この問題を手伝っていただければ幸いです。iPadのアプリケーションでMovieClipを1回再生しようとしています。私はこのように停止しようとしましたが、映画は停止しません

var loader:Loader = new Loader();
var swfFile:URLRequest= new URLRequest("/test.swf");
loader.load(swfFile);

movieClip = new MovieClip();
movieClip.addChild(loader);
movieClip.addFrameScript(movieClip.totalFrames - 1, callbackFunc);
movieClip.play();
private function callbackFunc():void
{
movieClip.stop();
}
4

3 に答える 3

2
var loader:Loader = new Loader();
var swfFile:URLRequest= new URLRequest("/test.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onFileLoaded);
loader.load(swfFile);

//I assume you have declared 'movieClip'?
//if not do:
//var movieClip:MovieClip;


private function onFileLoaded(e:Event):void
{
    movieClip = loader.content;
    addChild(movieClip);
    movieClip.play();
    addEventListener(Event.ENTER_FRAME, onEnter, true, 0, false);
}

private function onEnter(e:Event):void
{
    if (movieClip.currentFrame == movieClip.totalFrames)
    {
        movieClip.stop();
        removeEventListener(Event.ENTER_FRAME, onEnter, true, 0, false);
        //do other stuff
    }
}

これはあなたが必要とすることをするはずです。

于 2012-05-18T13:50:39.507 に答える
2
var loader:Loader = new Loader(); 
var swfFile:URLRequest= new URLRequest("/test.swf"); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
loader.load(swfFile); 

private function callbackFunc():void 
{ 
    movieClip.stop(); 
} 

function onCompleteHandler(loadEvent:Event)
{
    movieClip = MovieClip(loadEvent.currentTarget.content);
    addChild(movieClip);

    movieClip.addFrameScript(movieClip.totalFrames - 1, callbackFunc); 
    movieClip.play(); 
}
于 2012-05-18T13:51:08.467 に答える
2

再生されるのはコードではないため、コードは機能しませんmovieClip。キーフレームを再生するのは、コードにロードする外部SWFです。作成されたmovieClipキーフレームは1つだけで、その1つのキーフレームに外部SWfが配置されます。stop()関数を外部SWFに追加する必要があります。これを修正すると、外部SWFが1回再生され、その後停止します。

また、外部SWFを新しいMovieClipにラップして、既存のコードをその上に配置することもできます...

または、フルコントロールが必要な場合は、最後のフレームが再生されたときにイベントをディスパッチするように外部SWFコードを調整できます。SWFにカスタムの停止/再生機能を提供します。これを親SWFから呼び出すことができます。

幸運を!

于 2012-05-18T13:54:01.820 に答える