我对JS和JQuery不熟悉。
我正试图在JQuery中创建一种类型的GuitarHero游戏,但笔记并没有顺利进行
我正在做的基本上是在一个循环中调用setTimeout()
- 每个都有一个不同的超时(在数组中给出 - 如果你愿意的话,“歌曲片段”)。
代码如下所示:
while(counter < curSong.numNotes){
// set the parameters sent to runCreateNote
runCreateNote(counter, margin, entity, interval, name);
counter++;
}
runCreateNote
调用setTimeout()
时(出于范围目的)
这是动画代码:
noteBall.animate({
top: (noteBall.parent().height() - noteBall.height()*2) + 'px'
}, {
duration: fallingtime,
queue: false,
easing: "linear",
step: function() {
checkStep(id);
},
complete: function() {
reachBottom(id);
}
});
function checkStep(id){
var noteBall = $("#" + id);
var name = id.substring(0,1);
if (name == "R"){
if (isInRange(noteBall)){
isRedIn = true;
} else {
isRedIn = false;
}
}
if (name == "B"){
if (isInRange(noteBall)){
isBlueIn = true;
} else {
isBlueIn = false;
}
}
if (name == "G"){
if (isInRange(noteBall)){
isGreenIn = true;
} else {
isGreenIn = false;
}
}
if (name = "O"){
if (isInRange(noteBall)){
isOrangeIn = true;
} else {
isOrangeIn = false;
}
}
}
我知道如果任何代码是相关的,但我只是想表明动画看起来并不太重(我认为它会顺利运行)
我错过了一些关键原则吗?答案 0 :(得分:0)
好吧,如果没有看到你的其余代码或应用程序的演示,我的猜测就是这就是给你带来问题的一线:
top: (noteBall.parent().height() - noteBall.height()*2) + 'px'
如果您可以提前计算这些值并缓存它们,那么您可能会感觉更好。
您还应该考虑在checkStep中使用所有if语句并将它们移动到switch语句(或至少if / else) - 假设这些情况是互斥的。