2016-11-10 141 views
0

我有一個Container與多個SpriteMovieClip對象顯示在Stage,其中所有的精靈使用3MB png SpriteSheet
在某些時候,我加載另一個SpriteSheet以顯示使用它的不同Container
沿着試驗和錯誤的過程,我已經看到設置Containervisible屬性是不夠的,所以我使用removeChild(),還有cache(),這兩者都有助於適當的幀速率。
問題是,當我加載更多的容器和spritesheets時,幀率偶爾變得非常低。
爲了釋放已使用的資源,是否還有其他步驟?
常見的缺陷是什麼?已釋放createjs中使用的資源

回答

1

是的,當我第一次開始在createJS中創建應用程序時,我自己也遇到了相當多的性能問題。

如果您的幀速率低於應該的速度,請確保緩存不是從位圖創建的每個對象,因爲這些對象不會不斷刷新並且不會消耗性能。例如,形狀類型對象不斷刷新並且性能密集。

您應該使用以下模式對於不具備的動畫內容的對象:

var bounds = displayObject.nominalBounds; 
displayObject.cache(bounds.x, bounds.y, bounds.width, bounds.height); 

這將緩存的對象,並使其幾乎不消耗性能。 此外,當它是擺脫它的時候,請確保使用類似的資產dispurose:

//if it was added as a child of a container 
displayObject.parent.removeChild(displayObject); 
//if it was cached prior 
displayObject.uncache(); 
//when you don't need it anymore, for garbage collection 
displayObject = null;