在我所拥有的游戏中,当玩家走向数字并按下"m“键时,跳过了精灵的一个帧。为了澄清,下面是我的代码,用于通过将帧的位置存储在变量中来跟踪框架何时应该更改:
function animateStar() {
var pos = 0;
$(document).keyup(function(e) {
if (e.keyCode == 77) {
pos -= 32;
$('#n1').css('background-position', pos+'px -0px');
}
});
}
因此,正如您所看到的,每次按下键代码77 (表示"m")时,框架都会发生变化,因为我的每个帧的高度和宽度都是32 as。
然而,我遇到的问题是,当我的球员离开这个物体,回到那个物体上,而不是从他停下来的地方继续,画面就会跳过。
这是我的代码:http://jsfiddle.net/j40s8gjt/
因为我的sprite表是由数字组成的,所以您应该能够看到代码是怎么回事。尝试将框架设置为3-5之间的数字,离开对象,然后返回到它,然后再次按m,您应该会看到它会循环所有东西。
一个可能的解决方案可能是在玩家离开时存储对象的当前位置,但我不知道如何这样做。
我希望我说得够清楚了,谢谢!
发布于 2014-10-05 18:20:50
由于每次调用animateStar()
时默认为0,所以它将重新启动。
抓住当前的位置是你需要做的,而不是每次默认为0。
在animateStar()
中,更改这一行:
var pos = 0;
对此:
var pos = $('#n1').css('background-position').split('px ')[0] || 0;
这样,它就可以在启动时获得当前位置,而不是从0重新启动并重新设置框架。
工作示例:http://jsfiddle.net/j40s8gjt/2/
https://stackoverflow.com/questions/26205148
复制相似问题