我一直在制作一个游戏来练习编程,而我在使用Jquery .click()函数时遇到了问题。我的代码中有两个按钮,即开始按钮和攻击按钮。当我点击开始按钮时,.click()函数也会触发另一个按钮的代码,这会导致我的主菜单冻结并且不会绘制游戏屏幕。我已经使用了单独的ID作为按钮,但它们都似乎识别了单击开始按钮。我无法让它在JSFiddle中工作,但所有的代码都在那里。有人可以告诉我如何使用多个按钮?为什么jquery .click()触发多个函数?
//start button
$('#startButton').click(function() {
stage.state = "battle";
stage.update();
})
//attack button
$('#attack').click(firstTurn());
//attack button code
function firstTurn() {
console.log("firstTurn Fired");
if(p1.speed > opp.speed){
turn = 1;
} else{
turn = 0;
}
battle();
};
function battle(){
var battling = 1;
while(battling == 1) {
if(turn == 0) {
p1.health = p1.health-opp.attack;
$("#textBox").append('<p>'+opp.name+' hit you for '+ opp.attack+' points.</p><br/>');
draw();
sleep(1000);
console.log("attacked");
} else{
opp.health = opp.health-p1.attack;
$('#textBox').append('<p> You hit '+opp.name+' for '+p1.attack+' points.</p><br/>');
draw();
sleep(1000);
}
}
};
https://jsfiddle.net/memersond/m3gvv8y6/
究竟什么是'睡眠()'该怎么办? ...哦,我明白了。这绝对不是延迟执行JavaScript的方式。该代码将冻结整个浏览器。 – Pointy
你能推荐另一种方式来完成任务吗?我假设如果你是正确的,这就是冻结我的代码 – user2905256
你得到的是**忙碌循环**。你只是在给定的时间内烧掉客户端的CPU周期,使用电池,让风扇旋转等等。在JavaScript中,你使用超时来达到这个目的,因为它们根本没有烧坏CPU(或者是非常小的数量)。但是,您必须重新安排逻辑的工作方式。就你而言,可能是因为你可以设置一个“不做任何事情”的标志,并在1秒后超时。 – Pointy