2011-11-24 76 views
3

我正在創建一個交互式Flash應用程序,我需要使用許多聲音文件和圖像。我正在加載資源(包括圖像和聲音文件),因爲我需要它們。當我在計算機上運行它時,一切正常,我看不到任何延遲。在非現場計算機上運行會顯示暫停和延遲。我知道這是由於加載資源所需的時間。Flash AS3加載最佳做法

我想知道加載資源的最佳做法是什麼。我是否應該在開始時預加載所有內容(這會造成相當大的停頓)?當需要新資源時,多次進行短暫停頓會更好嗎?還是有更好的解決方案(我希望是這樣)?

我已經在AS3編程了大約3個月,所以我比較新。我很抱歉,如果這個問題真的是小白,但我確實需要弄清楚如何處理延遲。

回答

1

我同意@kapep應該在開始時預先加載常用資源。如果用戶可能不需要大量資源,則可以按需加載這些資源。

如果此測試是連續的,您可以在「測試問題1」開始後立即加載「測試問題2」材料。您可以異步加載,以便在加載更多素材(測試問題2資源)的同時,應用程序仍然是交互式的(用戶可以與測試問題1交互)。

+0

它看起來像兩個重複的答案指着我在同一個方向。謝謝您的幫助。 – user922467

2

這取決於它是什麼樣的應用程序:
如果您希望用戶通過整個應用程序(例如遊戲),您應該預先加載資源。如果您的應用程序更像是媒體播放器或圖像庫,大多數用戶只會看到少量資源,則應按需加載資源。

這也取決於資源的規模。你不應該讓用戶等待很長時間或創造很多流量。另一方面,執行單個預加載比加載單個請求中的每個微小資源可能更容易。也許你可以在一個步驟中定義更大的集合以避免這種情況。你甚至可以結合使用這兩種方法:預先加載一些常用資源,並在後臺加載一些其他的東西。

+0

該應用程序是一個測試的兒童。大多數資源都是需要的,但有些可能因爲程序中的分支而不能使用。大部分資源是20 - 200 kb。目前我的總資源約爲12MB,但預計完成申請後將達到50-70 MB。 – user922467

+1

@ user922467這對於預加載imho非常有用,特別是如果它會增長的話。當用戶回答當前問題時,我可能會嘗試加載下一個問題的資源。如果下一個問題取決於當前問題的答案,可能會成爲問題......要麼讓用戶等待,要麼讓他加載他不需要的東西。這是給你決定的。 – Kapep

+0

感謝您的幫助。我會盡量預先提出一些問題。 – user922467

0

對於預加載資源,我強烈建議使用Greensock庫。實際上通過使用LoaderMax你可以排隊要加載的內容,然後加載的內容附加到所述容器(影片剪輯,子畫面等)

這裏是用於裝載多個資源的樣本代碼:

var queue:LoaderMax = new LoaderMaxVars() 
       .maxConnections(1) 
      .onProgress(onContentProgress) 
      .onIOError(onIOErrorHandler) 
          .onComplete(onContentLoaded)); 

queue.append(new SWFLoader(contentTobeLoaded,new SWFLoaderVars().name(loaderName))); 

。 ...

private function onEmployeeContentLoaded(event:LoaderEvent):void { 
    var loadedContent:Array = (event.target as LoaderMax).content; 
    ....