jQuery的:小怪异概率。 在事件KeyDown同步

jQuery中/ JavaScript,但试图建立一个小游戏没有多少好处。

这里是的jsfiddle链接:http://jsfiddle.net/zDer5/

我试图移动IMG各地的股利。 我能够成功将其按住对角线移动方向键或两个对角移动在所有的方向和也。

但问题是,如果我持有右箭头键向右移动,并在当间我按了键,如果我松开上键(仍按住右箭头键)...的运动斜走了,现在停止,在那里我预期向右移动。

它发生在所有的情况下,抱着..左,按并释放了......移动停止。

第二:对第二图像停顿,一旦我改变方向。 任何指南运动平稳。

谢谢

这里是的jsfiddle链接:http://jsfiddle.net/zDer5/

我也是在这里粘贴相同的代码

var keys = {}; $('body').keydown(function(event){ keys[event.which] = true; moveDot(); }); $(document).keyup(function (event) { delete keys[event.which]; moveDot(); }); function moveDot(){ var html = ''; for (var i in keys) { if (!keys.hasOwnProperty(i)) continue; html += '<p>' + i + '</p>'; if(i == '37'){ var left = $('#dot').css("left"); left = parseInt(left.match(/\d+/)); left = left-3; $('#dot').css({ 'left': left + 'px' }); } if(i == '38'){ var top = $('#dot').css("top"); top = parseInt(top.match(/\d+/)); top = top-3; $('#dot').css({ 'top': top + 'px' }); } if(i == '39'){ var left2 = $('#dot').css("left"); left2 = parseInt(left2.match(/\d+/)); left2 = left2+3; $('#dot').css({ 'left': left2 + 'px' }); } if(i == '40'){ var top2 = $('#dot').css("top"); top2 = parseInt(top2.match(/\d+/)); top2 = top2+3; $('#dot').css({ 'top': top2 + 'px' }); } } $('#out').html(html); } <div id="game-panel"> <img src="http://203.157.202.2/photos2009/Pic/thumbnails/black_dot_400x400.jpg" id="dot" /> </div> #game-panel{ position: relative; border: 2px solid #ccc; height: 200px; } #game-panel img{ position:absolute; } #dot{ left:100px; top:100px; }

--------------解决方案-------------

你的问题是,你打破KEYUP您的更新机制。 如果您使用的时间间隔来控制刷新循环它工作得很好。 请参阅本更新的提琴:http://jsfiddle.net/zDer5/1/

在一个侧面说明,我真的可以推荐这个教程:http://www.html5rocks.com/en/tutorials/canvas/notearsgame/这似乎完全适合您的需求,虽然它采用一种略微不同的方法。

分类:JavaScript的 时间:2015-03-16 人气:170
本文关键词: JavaScript中,jQuery的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.407 (s). 9 q(s)