http://davzy.com/gameA/是测试我在做什么的URL,我所有的代码也在那里。字符在移动时如同嵌入网格一样移动?
我希望蓝色盒子的运动是流动的,不会像催促进入网格那么淫荡,但我希望他运动得非常快。我不知道如何完成这一点。我写了一个gameSpeed变量,但是当它增加时,蓝色盒子的移动变得更加波涛汹涌。
任何帮助,将不胜感激!
http://davzy.com/gameA/是测试我在做什么的URL,我所有的代码也在那里。字符在移动时如同嵌入网格一样移动?
我希望蓝色盒子的运动是流动的,不会像催促进入网格那么淫荡,但我希望他运动得非常快。我不知道如何完成这一点。我写了一个gameSpeed变量,但是当它增加时,蓝色盒子的移动变得更加波涛汹涌。
任何帮助,将不胜感激!
由于您已经在使用jQuery,因此您可以利用jQuery的动画支持。在controls.js
,替换:
$('#objUserCore').css('left',$('#objUserCore').position().left + (gameSpeed * playerSpeed));
有:
$('#objUserCore').animate({ 'left': '+=' + (gameSpeed * playerSpeed) });
jQuery将分拆适当的计时器从而平稳且高效动画的精灵。 '+ ='语法告诉jQuery从其当前值开始对该值进行动画处理,并添加指定的差异。您可以在jQuery documentation中找到详细信息。
为了让动画效果在所有四个方向去,替换所有四个if语句中controls.js
:
if (event.keyCode == '39')
$('#objUserCore').animate({ 'left': '+=' + (gameSpeed * playerSpeed) });
if (event.keyCode == '37')
$('#objUserCore').animate({ 'left': '-=' + (gameSpeed * playerSpeed) });
if (event.keyCode == '38')
$('#objUserCore').animate({ 'top': '-=' + (gameSpeed * playerSpeed) });
if (event.keyCode == '40')
$('#objUserCore').animate({ 'top': '+=' + (gameSpeed * playerSpeed) });
你应该有一个计时器,每隔10ms左右关闭一次。
有一个变量speedX和speedY。定时器启动时,将速度添加到该位置。按方向键时,增加或减少速度。即如果按下左键,则speedX -= 1
您会注意到,如果按住当前示例中的箭头键,它不会看起来不平坦。如果您按下一次键,它只是生涩。
http://davzy.com/gameA/这使得它更加顺畅,但它仍然捕捉到网格,然后它继续移动,如果按住。 – Macmee 2010-07-22 14:15:39