2010-07-22 30 views
0

http://davzy.com/gameA/是测试我在做什么的URL,我所有的代码也在那里。字符在移动时如同嵌入网格一样移动?

我希望蓝色盒子的运动是流动的,不会像催促进入网格那么淫荡,但我希望他运动得非常快。我不知道如何完成这一点。我写了一个gameSpeed变量,但是当它增加时,蓝色盒子的移动变得更加波涛汹涌。

任何帮助,将不胜感激!

回答

4

由于您已经在使用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) }); 
+0

http://davzy.com/gameA/这使得它更加顺畅,但它仍然捕捉到网格,然后它继续移动,如果按住。 – Macmee 2010-07-22 14:15:39

1

你应该有一个计时器,每隔10ms左右关闭一次。

有一个变量speedX和speedY。定时器启动时,将速度添加到该位置。按方向键时,增加或减少速度。即如果按下左键,则speedX -= 1

您会注意到,如果按住当前示例中的箭头键,它不会看起来不平坦。如果您按下一次键,它只是生涩。