The*_*ter 5 html javascript loops
我正在用javascript编写基于文本的游戏,主要的“功能”之一是输入框,它接受用户输入,并通过button标签提交输入。在我的主游戏循环中,调用按钮的onclick:
var game_u = new game_util();
function Game_Main(){
while(active){
input = game_u.getText();
//p = new player();
active = false;
}
}
function game_util(){
this.getText = function(){
//The Submit button
confirm_plr.onclick = function(){
//Input value
return player_in.value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方式的问题是,while循环不会“等待”单击提交按钮以从game_u.getText()获取输入。功能并继续循环。
我有更好的方法吗?这是我第一次玩文字游戏?我不想使用提示方法,因为它破坏了游戏的沉浸感。
我也是来自Java(一种面向对象的编程语言),所以这就是为什么要使用while循环的原因。
任何帮助表示赞赏。
如果您想通过用户输入来暂停,一个简单的prompt()框就可以了。
尝试这个:
var input = prompt("Enter data here", "");
Run Code Online (Sandbox Code Playgroud)
这将等待输入并将其存储到变量中input。
请参阅JSFiddle.net 上的工作示例。
AFAIK,同步 JS 是不可能的,根据这个 SO post:
JavaScript 是异步的,你不能“暂停”执行。此外,当 JavaScript 运行时,整个用户界面会冻结,因此用户无法单击按钮。
至于你的问题,
如果我不应该使用 while 循环,那么什么可以替代它?
因为 JS 是事件驱动的,并且每次单击该按钮(并输入输入)时您都尝试运行代码,因此只需使用处理程序即可onclick。
所以,而不是这样:
while(active) {
input = game_u.getText();
p = new player();
active = false;
}
Run Code Online (Sandbox Code Playgroud)
你可以做:
document.getElementById("button").addEventListener("click", function() {
input = game_u.getText();
p = new player();
active = false;
});
Run Code Online (Sandbox Code Playgroud)
每次单击按钮时都会运行代码,本质上与您尝试执行的操作相同。