Javascript 奇怪的KinecticJ性能问题

Javascript 奇怪的KinecticJ性能问题,javascript,html,kineticjs,Javascript,Html,Kineticjs,我有一个kincetjs阶段,它经常更新,但实际上没有什么令人难以置信的——大约每2-5秒更新一次。此阶段包含约50-200个图像对象: _renderDices: function() { var dt0 = (new Date()).getTime(); this.diceLayer.removeChildren(); this.diceLayer.clear(); var dt3 = (new Date()).getTime(); for ( var j = 0

我有一个kincetjs阶段,它经常更新,但实际上没有什么令人难以置信的——大约每2-5秒更新一次。此阶段包含约50-200个图像对象:

_renderDices: function() {
  var dt0 = (new Date()).getTime();


  this.diceLayer.removeChildren();
  this.diceLayer.clear();

  var dt3 = (new Date()).getTime();

  for ( var j = 0 ; j < this.imagesCount; j++) {
        var image = new Kinetic.Image({
            x: this.images[j].X,
            y: this.images[j].Y,
            image: this.images[j].imageObj,
            width: this.width ,
            height: this.height,
            listening: false
        });
        this.diceLayer.add(image);
  }

  var dt2 = (new Date()).getTime();

  this.diceLayer.draw();

  var dt1 = (new Date()).getTime();

  console.log("renderTime " + (dt1 - dt0 ) + " ms, drawTime: " + (dt1 - dt2) + " ms , clearTime: " + (dt3-dt0)+"ms children=" + this.diceLayer.children.length);

},
\u呈现:函数(){
var dt0=(新日期()).getTime();
this.diceLayer.removeChildren();
这个.dicellayer.clear();
var dt3=(新日期()).getTime();
对于(var j=0;j
但渲染性能很快(在2-3k迭代之后)从5ms下降到1000-2000msg。 我已经测试了chrome和firefox,看起来像是GC问题,但我不确定。可能存在另一种可能性,生成带有图像的舞台-我有大约20个不同的图像(50x50-不是很大)和50-200个投影


但无论如何,我不能相信kinectjs在如此少量的对象上会如此糟糕——可能是我做错了什么,我的对象没有正确清理。

removeChildren
将从舞台上删除这些子对象,但会将这些被删除的子对象保留在内存中,以备以后重新添加它们

因此,您正在积累被移除的孩子,这最终会降低性能


如果以后不打算重用子对象,请改用
destroyChildren

renderTime 8 ms,drawTime:4 ms,clearTime:1ms children=85 MapView.js:839-已经5分钟了:)