2011-03-17 114 views
0

好的,如果你能忍受我這會變得複雜(或者我不確定)。我的任務是製作一個閃光幻燈片,它會像迷你電腦一樣連接到一臺32英寸的顯示器上,它的設置方式是我的閃光燈文件設置爲全屏幕和文件夾包含11個圖像和一個XML文件,Flash文件從XML文件中提取圖像和文字(如果需要的話),一些圖像是平面的(沒有文字),一些是爲動態文本設置的,基本上是數字標牌應用程序。Flash幻燈片優化問題

應用程序工作正常,問題是我不知道如何優化其長期使用。加載到它的圖像是1920×1080約500K-1.2MB,但每個週期提高系統內存量的因爲沒有可用的內存而導致崩潰的程度

我想弄清楚如何基本上在週期結束時轉儲這樣內存使用不會每次旋轉兩次。我知道,如果我刪除了可能對其產生重大影響的事件偵聽器,但我不確定應用程序中的位置如何或者何處。

就像我說的那樣,flash文件中的所有內容都非常精簡,其中有一個AS框架,它不在庫中,或者它是全部動態生成的,我相信這是我的問題知道如何解決它。

代碼:

Link to the Code, via Pastie

有我使用的是外部吐溫類(我討厭它,但無法弄清楚如何做出來它變淡)如果需要的話,所以你可以運行,看看發生了什麼,我會壓縮並分享它,只是讓我知道。

(抱歉它是一種噩夢中試圖將其粘貼在這裏,4個空間的是很酷,但應該有一個選項來包裝大塊了。)

真的在這裏感謝幫助,我真的提前致謝。

+1

當您切換幻燈片時,您不會刪除'Loader'。這絕對是爲什麼每張新幻燈片都在膨脹的重要原因。 – 2011-03-17 15:06:40

+0

你的回答和maurycy幫助指向我需要去的方向,所以再次感謝你的快速反應。 – BrandonS 2011-03-17 17:03:06

回答

1

從你的寫作我明白,每一個新的週期你再次加載圖形沒有傾銷他們之前。

我想要麼:

  • 不要再加載圖形,所以才重用那些你已經加載;
  • 每當圖像從屏幕上消失,刪除所有對它的引用,並取消所有聽衆(甚至更好地使用useWeakReference參數)並忘掉它。垃圾收集應該自動發生。
+0

這確實有很大的幫助,並且使useWeakReference開關變爲true,一次輪換將使其達到200mb,現在輪到110mb一次。但它仍然爬上了第一次旋轉後,我正在刪除參考,看看它是否得到它剩下的方式謝謝。如果是的話,我會跑回來,併爲你評分。 – BrandonS 2011-03-17 15:29:39

+0

函數我叫「fadeSlideIn」將addChild與slideLoader的內容,但它只需要1在那裏基本上它是一個溫度。所以我做了一個while語句,雖然numChilderen> 1 removeChildAt(0),這固定它。大多數情況下,它現在不會超過48米,雖然這對瀏覽器中的閃存有很大的影響,但作爲應用程序它可能會很好。所以,非常感謝快速響應,並指出我在正確的方向,而不是隻是修復代碼,我學到了很多關於刪除引用等,謝謝。 – BrandonS 2011-03-17 17:01:50

1

看起來您每次需要顯示文件系統時,都會從文件系統的每張圖像中加載 - 所以這種方法存在一些問題。

1)每次計時器切換時,您都會創建一個新的Loader對象,這意味着當這件事情運行時,最終會有很多加載器 - 而每個加載器將持有該圖像的一個實例它加載。在你的fadeSlideIn方法中,你不會從加載器中移除Event.COMPLETE監聽器,所以每個加載器都會永遠留在內存中。

2)位圖特別具有一些特質 - 我對細節有點粗略,自從我處理這個以來已經有一段時間了,但我相信當你清理位圖時,你應該始終執行myBitmap .bitmapData.dispose(),因爲bitmapData不會很好地得到GC'd。

我會做的是,而不是將所有的圖像加載到數組中,然後循環訪問數組。對於任何給定的圖像,您不必多次使用加載器。您可以嘗試使用LoaderMax(https://www.greensock.com/loadermax/)來簡化加載過程。

祝你好運,讓我知道如果你有任何進一步的問題!

+0

對不起,忘了回覆,這實際上把它帶到了一個新的水平,讓它運行在最好的狀態,所以謝謝! – BrandonS 2011-03-31 17:42:20

+0

沒問題,樂於幫忙! – Myk 2011-03-31 18:16:57