JavaScript暂停执行功能等待用户输入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript暂停执行功能等待用户输入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2696字,纯文字阅读大概需要4分钟。
内容图文
![JavaScript暂停执行功能等待用户输入](/upload/InfoBanner/zyjiaocheng/708/8355b38e3d7c42f594e1e4b72ed3c034.jpg)
我正在尝试使用HTML5画布,JavaScript和XML制作一种游戏.
我们的想法是,您可以通过将问题和答案放在XML文件中来进行测验.
我写了一个主循环,循环遍历所有问题,构建它们并检查答案的正确性.
现在我只是使用警报和对话框来回答问题
问题是我的主循环是一个大的互连整体,从头到尾遍历整个游戏,而不是让警报框提出问题和对话框来回答,紧接着,我想要一些用户互动.
问题的答案显示在屏幕底部的框中??,用户可以控制起重机选择正确的答案.
这是我坚持的主循环代码片段:
answer = loadQuestion(i);
if (answer == "correct") {
// answered correctly, update scoreArray and load next question
scoreArray[currentQuestion] = "correct";
// show 'next'-button and wait for press to continue
} else {
// answered incorrectly again, update scoreArray and load next question
scoreArray[currentQuestion] = "error";
// show 'next'-button and wait for press to continue
}
正如您所看到的,我正在调用loadQuestion,它会立即加载问题,显示可能的答案,现在立即抛出一个对话框,您可以在其中键入答案.
此答案将被返回并验证.
我已经编程了起重机的控制装置,用户已经可以拿起一个装有它的盒子.
但是因为我正在调用loadQuestion并期望它返回一个值,所以这不起作用.
如果玩家使用起重机给出答案,我该如何让我的主循环“暂停”,然后继续?
我已经尝试将答案作为一个全局变量,并且只是在答案==“”之前有空,以便在答案获得值之前保持函数忙无所事事,但这只是冻结了脚本.
我还试图监视应答变量的状态,并且在发生这种情况时清除间隔并返回值,但是这只是返回false,因为函数完成而没有立即返回值.
解决方法:
How do I make my main loop “pause” until an answer has been given by the player using the crane, and then proceed?
通过分手. JavaScript中浏览器中唯一的“收益”是让你的函数结束,然后安排稍后调用(通过setTimeout,setInterval,ajax回调等).在你的情况下,我倾向于认为触发回叫的触发器应该是用户回答上一个问题的动作,例如答案框上的点击处理程序或其他一些(而不是setTimeout等,这是自动化的).
例如,这段代码:
function loopArray(ar) {
var index;
for (index = 0; index < ar.length; ++index) {
doSomething(ar[index]);
}
}
……可以像这样重铸:
function loopArrayAsync(ar, callback) {
var index;
index = 0;
loop();
function loop() {
if (index < ar.length) {
doSomething(ar[index++]);
setTimeout(loop, 0);
}
else {
callback();
}
}
}
第二个版本在每次循环迭代时都会将控制权返回给浏览器.同样重要的是要注意第二个版本在循环完成之前返回,而第一个版本等待直到完成所有循环,这就是为什么第二个版本具有它完成循环时调用的回调函数的原因.
调用第一个的代码可能如下所示:
var a = ["one", "two", "three"];
loopArray(a);
// Code that expects the loop to be complete:
doTheNextThing();
doYetAnotherThing();
…而使用异步版本看起来像这样:
var a = ["one", "two", "three"];
loopArrayAsync(a, function() {
// Code that expects the loop to be complete:
doTheNextThing();
doYetAnotherThing();
});
这样做,你可能会发现你使用closures(循环,上面,是一个闭包),所以这篇文章可能很有用:Closures are not complicated
内容总结
以上是互联网集市为您收集整理的JavaScript暂停执行功能等待用户输入全部内容,希望文章能够帮你解决JavaScript暂停执行功能等待用户输入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。