2014-06-24 23 views
1

我想通過AS3中的Loader類來加載已加載的swf文件。 我的代碼看起來如下:如何循環加載Loader的SWF文件?

public class MyLoader extends MovieClip { 
    public function MyLoader() { 
     var myLoader:Loader = new Loader(); 
     var url:URLRequest = new URLRequest("external-movie.swf"); 
     myLoader.load(url); 
     myLoader.contentLoaderInfo.addEventListener("complete", function() { 
     }); 
     addChild(myLoader); 
    } 
} 

從我瞭解的裝載機具有當嵌入的影片完成了對任何事件?有沒有辦法解決這個問題?它不能是AS3的實現。我只想要一個從Indesign導出的電影在循環中運行。在此先感謝

+0

只是一個提示:在加載之前,您應該添加完整的偵聽器。 – BadFeelingAboutThis

回答

1

特別是當你沒有什麼經驗編程時,你應該避免骯髒的快捷方式,因爲它們只會給你帶來很多麻煩。所以避免使用匿名函數並避免使用字符串來代替靜態事件變量。 這就是說,如果你裝載的電影有它自己的時間線,那麼它將被轉換成一個MovieClip。此外,該電影不嵌入,但加載,這是一個很大的區別。

記住,電影的參考和裝載機:

private var theLoadedMovie:MovieClip; 
private var myLoader:Loader; 

監聽INIT事件而不是完整的事件(與時間表電影開始時,他們的第一幀被載入「INIT」打,完整事件在整個電影加載時觸發)。

myLoader = new Loader(); 
var url:URLRequest = new URLRequest("external-movie.swf"); 
myLoader.load(url); 
myLoader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); 

在你handleInit方法保持那部電影的參考:在您的handleEnterFrame方法

theLoadedMovie = myLoader.content as MovieClip; 
addChild(theLoadedMovie); 
theLoadedMovie.addEventListener(Event.ENTERFRAME, handleEnterFrame); 

檢查影片進度,知道什麼時候已經結束:

if(theLoadedMovie.currentFrame == theLoadedMovie.totalFrames) 
{ 
    //movie has reached then end 
} 
+0

你應該在使用'load()'之前添加你的加載器監聽器。在完成執行當前線程之前,有些情況下它可能會從負載中返回。 – BadFeelingAboutThis

+0

我同意這是最好的方法(+1),它也可以用少量代碼行中的'addFrameScript'來完成 - 但'addFrameScript'沒有記錄,最好不要依賴。 – BadFeelingAboutThis

+0

這是複製和粘貼時發生的情況。加載應該在課程結束時發生。 – BotMaster