我有一个游戏,当你点击Obs时,你会在屏幕上看到一个游戏。在它有一个重试按钮,它重置它,它大部分时间工作,但在第三次或第四次重试后它不会重置它。它只是保持它的位置。为什么这样做?下面是我用于重置的代码和链接。感谢。
if (collides($(value), $('#player'))) {
$('#levelOne').stop();
$('#player').css('border', 'solid 1px yellow');
//GAME OVER SCREEN START
$('#GameOver').fadeIn();
$('#retry').click(function () {
$('#GameOver').fadeOut();
// NEW LOGIC
$("#levelOne").css('margin-top', '-1520px');
$("#player").css('border', 'solid 1px green')
$("#player").css('margin-left', '223px');
$('#levelComplete').hide();
$('#levelOne').animate({
'margin-top': '+=1520px'
}, speed);
handleCollisions()
});
}
答案 0 :(得分:1)
您不断在handleCollisions
函数中添加click事件侦听器(此部分:$('#retry').click(function () {
),这迟早会因为创建/调用的事件数量疯狂而终止您的性能大。这是你需要注意摆脱毛刺的事情。
我将点击处理程序功能移到了外面,它运行得很好。我还在每一帧都禁用了控制台日志,因为它也会破坏性能。
请在此处查看:http://jsfiddle.net/38bod36e/103/
如果你想要一致的表现,要小心这样的东西。在控制台中查看事件数量随原始代码中呈现的每个帧的增长情况:http://jsfiddle.net/38bod36e/105/