2011-03-30 105 views
0

因此,我製作了一個SWF文件,並且需要在項目開始時添加一些說明。我認爲最簡單的方法是將動畫製作在單獨的SWF中,然後將其導入到第一個SWF的開頭。我的問題是,我無法找到一個可靠的方式來分辨第一個SWF何時完成播放。我已經搜索了這個,但我似乎無法找到任何可行的方法。由於一些奇怪的原因,無論我做什麼程序似乎認爲外部SWF只有2幀,如果我把一個ENTER_FRAME監聽器和跟蹤externalSWF.currentFrame我得到「1,1,2,2,2,2, 2,2 ...「我的代碼看起來像這樣。AS3:從外部加載的SWF獲取信息

var ldr = new Loader(); 
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); 
ldr.load(new URLRequest("Instructions.swf")); 

function loaded(e:Event){ 
    trace("Loaded"); 
    var extSwf = ldr.content as MovieClip; 
    addChild(extSwf); 
    trace(extSwf.totalFrames);//Returns 2 
} 

有沒有其他人有類似的外部SWFs問題?

另外,爲了記錄,外部SWF在我作爲孩子添加時正常播放。問題是當它完成播放時從舞臺上移除它。它是互動的,所以我不能只是做一個幀數。

編輯:所以我試着在extSwf上做一個getQualifiedClassName()調用,並且我得到了「Instructions_fla :: MainTimeline_ Preloader _」,這可以解釋框架的差異性。我怎樣才能訪問實際的時間表?

回答

0
+0

應該有一種方法可以直接與它交互嗎?這是其他討論給我的印象。 – Cyborg771 2011-03-30 19:49:22

+0

LoaderInfo上的sharedEvents是SWF之間進行通信的官方方式。它的設計也適用於不同的安全環境,如果這對你很重要:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html#sharedEvents – joshtynjala 2011-03-30 20:23:30

0

所以我找到了解決問題的辦法。就像我在編輯中所說的那樣,我得到了「Instructions_fla :: MainTimeline_Preloader_」作爲QualifiedClassName,所以我搜索了一下,發現有人說Flash CS5默認導出SWF文件時使用了預加載器,這樣就是連接到extSwf而不是MovieClip本身。修復它的方法是進入文件>動作腳本設置>庫路徑,並將默認鏈接更改爲「合併到代碼」。這似乎只發生在CS5中。我在這裏找到了解決方案:http://blog.flash-core.com/?p=142