2011-04-23 43 views
-1

我已經有一個.fla和其他幾個應該使用它的.fla文件的加載器屏幕。我怎樣才能將這個加載器與其他所有文件一起使用? 謝謝。一個裝載機屏幕有幾個.fla

+0

你是什麼意思的「裝載機屏幕」?你只是指你在加載過程中顯示的圖像嗎? – jhocking 2011-04-23 13:14:13

+0

這樣的事情。設計師製作了一個預加載器,然後我將在幾個.fla文件中使用它 – Tuco 2011-04-23 13:18:35

+0

在這種情況下,您的問題與此處無關,因爲這是一個關於圖像編輯的問題。無論是你還是你沒有解釋你想要什麼。 – jhocking 2011-04-23 19:50:56

回答

1

不知道爲什麼你會陷入低谷,這是Flash-land的一個非常標準的問題。

基本上,您的預加載器.fla發佈的.swf需要能夠加載並顯示由其他.fla發佈的.swf。你會把代碼看起來像這樣到您的預加載:

var swf1:MovieClip; 
var swf2:MovieClip; 

function loadFirstSwf():void { 
var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, firstSWFLoaded); 
loader.load(new URLRequest("swf1.swf")); 
} 

function firstSWFLoaded(e:Event):void { 
swf1 = MovieClip(e.currentTarget.content); 
e.currentTarget.removeEventListener(Event.COMPLETE, firstSWFLoaded); 

loadSecondSwf(); 
} 

function loadSecondSwf():void { 
var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, secondSWFLoaded); 
loader.load(new URLRequest("swf2.swf")); 
} 

function secondSWFLoaded(e:Event):void { 
swf2 = MovieClip(e.currentTarget.content); 
e.currentTarget.removeEventListener(Event.COMPLETE, secondSWFLoaded); 
whatever(); 
} 

function whatever():void { 
// logic here to do whatever you need to do next. 
} 

loadFirstSwf(); 

注意,這並不是最高效的架構 - 我試圖保持儘可能簡單,不是確保您的AS3經驗水平。有幾件事要注意:

1)你按順序調用這些。當第一個完成時,它會得到第二個,等等。您可以添加第三個和第四個等。這是爲了明確它們到達的順序。你也可以一次性將它們全部解僱,但它需要一些額外的邏輯來確保你知道從哪裏來,因爲他們可以以不同的順序完成比你開始他們。這是一個常見的菜鳥錯誤,我試圖設置它,以便您不必處理它。

2)確保在提取加載的.swf文件後,從加載器中刪除事件偵聽器。這只是確保他們不會永遠留在記憶中。 3)你實際上並沒有用這個例子來監聽進度 - 如果你願意,你可以使用loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler),然後把代碼放到你的進度處理器中去監聽針對負載的實際當前狀態。

所以,上面的例子是超級簡單,但應該工作。如果您希望獲得更強大的功能,或者您正在處理大量的swf子項,請使用GreenSock中的LoaderMax這樣的功能 - 這是一個免費的第三方庫,可幫助您輕鬆管理多個文件的加載。

乾杯,我希望有幫助!

+0

downvote是因爲他問了一個含糊不清的問題,並不能解釋他究竟想要做什麼。如果你的答案對他想要的做出正確的假設,那麼這很好。 – jhocking 2011-04-23 19:57:20

相關問題