-1

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 ブラウザがクラッシュします。このバグの修正を手伝ってください。本当にありがとう!!!

4

1 に答える 1

0

問題は次のとおりです。

各アニメーション ループ中に、追加のステージ + レイヤー + 要素を作成しています。

すぐに、数百以上のオブジェクトがすべてメモリを占有するようになります。

その代わり:

アニメーションが始まる前に、stage+layer+text+rect を 1 回作成します。

次に、さまざまな object.set... コマンドを使用して、各アニメーション ループで既存の text+rect を操作します。

于 2013-09-30T19:52:19.727 に答える