我正在创建一个使用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。 非常感谢!!!
答案 0 :(得分:0)
问题是:
您正在每个动画循环中创建其他阶段+图层+元素。
很快你将有数百个物品占据记忆。
<强>相反:强>
在动画开始前创建舞台+图层+文字+矩形。
然后使用各种object.set ...命令操纵每个动画循环中的现有文本+ rect。