当这个变量变成一定数量时,我希望循环停止,但我不断收到错误,"未捕获的语法错误:非法的中断语句"。
function loop() {
if (isPlaying) {
jet1.draw();
drawAllEnemies();
requestAnimFrame(loop);
if (game==1) {
break;
}
}
}
答案 0 :(得分:51)
break是打破一个循环,就像你在这里没有切换等,你需要使用return
打破当前函数的执行流程并返回来电者。
function loop() {
if (isPlaying) {
jet1.draw();
drawAllEnemies();
requestAnimFrame(loop);
if (game == 1) {
return
}
}
}
注意:这不包括if条件背后的逻辑或何时从方法返回,因为我们需要有关于drawAllEnemies
和requestAnimFrame
方法的更多上下文以及如何{ {1}}值已更新
答案 1 :(得分:4)
您需要确保在游戏== 1时停止调用requestAnimFrame。中断语句仅退出传统循环(例如while()
)。
function loop() {
if (isPlaying) {
jet1.draw();
drawAllEnemies();
if (game != 1) {
requestAnimFrame(loop);
}
}
}
或者您也可以跳过第二个if
条件并将第一个条件更改为if (isPlaying && game !== 1)
。你必须创建一个名为game的变量,并给它一个值0.每场比赛都加1。
答案 2 :(得分:0)
我有一个next()
函数,可能会激发您的灵感。
function queue(target) {
var array = Array.prototype;
var queueing = [];
target.queue = queue;
target.queued = queued;
return target;
function queued(action) {
return function () {
var self = this;
var args = arguments;
queue(function (next) {
action.apply(self, array.concat.apply(next, args));
});
};
}
function queue(action) {
if (!action) {
return;
}
queueing.push(action);
if (queueing.length === 1) {
next();
}
}
function next() {
queueing[0](function (err) {
if (err) {
throw err;
}
queueing = queueing.slice(1);
if (queueing.length) {
next();
}
});
}
}