当我画画布使用kineticjs时,内存增加非常快

时间:2013-09-30 11:36:53

标签: javascript html5 kineticjs

我正在创建一个使用HTML5和kineticjs lib的游戏。我使用Nodejs启动服务器。代码:

function animate() {
  newDraw()

  // Request a new animation frame using Paul Irish's shim
  window.requestAnimFrame(animate);
};

function newDraw()
{

  if(typeof localPlayer != 'undefined') {

       var layernew = new Kinetic.Layer();
       var stg = new Kinetic.Stage({
          container: 'container',
          width: 500,
          height: 300
        });

      var data = localPlayer.newdraw();
      layernew.add(new Kinetic.Text(data.Text))
      layernew.add(new Kinetic.Rect(data.rect))

      stg.add(layernew)

  }
}

在requestAnimationFrame.js文件中

// shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       || 
          window.webkitRequestAnimationFrame || 
          window.mozRequestAnimationFrame    || 
          window.oRequestAnimationFrame      || 
          window.msRequestAnimationFrame     || 
          function(/* function */ callback, /* DOMElement */ element){
            window.setTimeout(callback, 100);
          };
})();

它正常工作,但内存增长非常快=> firefox浏览器崩溃了。 请帮我修复这个bug。 非常感谢!!!

1 个答案:

答案 0 :(得分:0)

问题是:

您正在每个动画循环中创建其他阶段+图层+元素。

很快你将有数百个物品占据记忆。

<强>相反:

在动画开始前创建舞台+图层+文字+矩形。

然后使用各种object.set ...命令操纵每个动画循环中的现有文本+ rect。