0

我正在構建一個應用程序,我想重播幾個用戶(最多20個)的移動。 每個用戶都有一個X,Y位置列表(範圍從20到400個位置)。重播範圍從1-10分鐘。KineticJS在刪除和添加圖層時消耗大量內存

重播以8 FPS繪製,這是我所需要的。在每一幀我刪除顯示用戶移動的圖層,並將所有內容重新繪製到下一個時間點。

此應用程序使用大量內存,如果我重新運行重播,內存消耗會不斷增加(高達8 GB)。我曾嘗試在谷歌瀏覽器(版本27)中使用Profiler,並且似乎內存中有一層圖層,即使我經常在舊圖層上使用remove()

以下代碼顯示了應用程序的快速模型。

function draw() 
{ 
    stage.removeChildren(); 

    var userLayer = new Kinetic.Layer(); 

    /* 
    iterate all data and create lines to signify the movement of a user, 
    and add it to userLayer 
    */ 

    stage.add(userLayer); 
} 

setInterval(draw, 125); // 8 FPS 

我的問題是,stage.removeChildren()Kinetic.Layer().remove(),他們不從內存中刪除該層?或者我需要以完全不同的方式處理這個問題?

回答

1

是的。 「刪除」是從父容器中刪除。但是對象依然存在。你必須使用「銷燬」。