2012-05-18 56 views
2

如果你幫我解決這個問題,我會非常感激。 我試圖在我的iPad應用程序中播放一次MovieClip。我試圖做這樣停止,但電影不停止as3播放movieclip一次

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(); 
} 
+0

嗯。你對新的MovieClip()有什麼期望?它有1個空框架,不能播放任何東西。由'addFrameScript()'添加的回調被觸發,就好像它們的代碼剛剛寫入指定的框架一樣。 –

+0

簡而言之:你的'movieClip'沒有框架來添加腳本。嘗試'trace(movieClip.currentFrame);'將輸出'0',注意在設計時創建的MovieClip的'movieClip.currentFrame'總是大於0。 –

回答

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 
    } 
} 

這應該做你所需要的。

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(); 
} 
2

您的代碼將無法工作,因爲它不是時播放的movieClip,那就是你加載到它,將發揮它的關鍵幀的外部SWF。創建的movieClip只有1個關鍵幀,並且在該關鍵幀上放置了外部SWF。您應該將stop()函數添加到外部SWF中。如果這樣做,則更正外部SWF播放一次,然後停止。

您也可以包裝外部SWF到一個新的MovieClip,並把你已經到它的代碼...

,或者如果你想完全控制,可以使這個調度適應外部SWF代碼事件當最後一幀播放。在SWF上提供自定義停止/重放功能,然後您可以從父SWF調用該功能。

祝你好運!