我正在寻找一些帮助,在Tumult Hype中使用Javascript添加一些Breakout游戏的代码。我希望这样做,一旦你达到一定的分数,球的速度就会增加。
这是迄今为止没有速度助推器的代码。
var input1 = event.which || event.keyCode;
if ((input1 == "37") && (window.setLoopLeft == false)) { // LEFT ARROW PRESSED
window.setLoopLeft = true;
window.intervalLeft = setInterval(moveLeft, 5);
} else if ((input1 == "39") && (window.setLoopRight == false)) { // RIGHT ARROW PRESSED
window.setLoopRight = true;
window.intervalRight = setInterval(moveRight, 5);
} else if ((input1 == "32") && (window.ballLaunched == false)) { // SPACE BAR PRESSED
window.ballLaunched = true;
// RUN THE MOVEBALL FUNCTION EVERY 10 MILLISECONDS
window.intervalMoveBall = setInterval(moveBall, window.ballSpeed);
}
function moveBall() {
var ballLeft = parseInt(hypeDocument.getElementById("ball").style.left);
var ballTop = parseInt(hypeDocument.getElementById("ball").style.top);
这是我要添加的代码。现在我计划的是创建一个全局变量来应用于window.intervalMoveBall。然后我会编写一个新功能,可以检测1000点的分数值,并使球的速度加倍,使其每5毫秒而不是10分钟移动。
现在我不知道该怎么做才是编写if语句以便检测得分值。我想知道是否有人可以告诉我如何正确,甚至可以告诉我是否使用带有if语句的全局和新函数甚至可以用于此。
答案 0 :(得分:0)
您当前正在使用setInterval,因此要更改清除原始间隔所需的时间间隔,并使用新的时间间隔启动新的时间间隔。一个更简单的方法是使moveBall函数负责使用setTimeout调用自身(对于moveLeft和moveRight也是如此),就像这样......
var input1 = event.which || event.keyCode;
if ((input1 == "37") && (window.setLoopLeft == false)) { // LEFT ARROW PRESSED
window.setLoopLeft = true;
window.intervalLeft = setInterval(moveLeft, 5);
} else if ((input1 == "39") && (window.setLoopRight == false)) { // RIGHT ARROW PRESSED
window.setLoopRight = true;
window.intervalRight = setInterval(moveRight, 5);
} else if ((input1 == "32") && (window.ballLaunched == false)) { // SPACE BAR PRESSED
window.ballLaunched = true;
moveBall();
}
function moveBall() {
setTimeout(moveBall, window.ballSpeed);
// the rest of your moveBall function
}
这意味着我们可以在每次moveBall运行时设置不同的时间跨度,并使用一些条件逻辑,例如,
function moveBall() {
setTimeout(moveBall, window.score > 1000 : 5 ? 10);
// the rest of your moveBall function
}
显然这是一个无限循环,所以你还想添加一些方法来阻止它,例如检查游戏是否已经完成,例如,
function moveBall() {
if (window.gameFinished) {
return;
}
setTimeout(moveBall, window.score > 1000 : 5 ? 10);
// the rest of your moveBall function
}
另外,使用存储在窗口对象上的大量全局变量可能会变得非常难以维护,因此可能需要查看JavaScript命名空间。