我一直在制作游戏来练习编程,而我在使用Jquery .click()函数时遇到了麻烦。我的代码中有两个按钮,即启动按钮和攻击按钮。当我单击开始按钮时,.click()函数也会触发另一个按钮的代码,这会导致我的主菜单冻结而不会绘制游戏画面。我已经为按钮使用了单独的id,但他们似乎都认识到单击开始按钮。我无法让它在JSFiddle中工作,但所有代码都在那里。有人可以告诉我如何使用多个按钮吗?
//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);
}
}
};
答案 0 :(得分:10)
$('#attack').click(firstTurn());
应该是:
$('#attack').click(firstTurn);
您希望将该函数作为参考传递,而不是立即执行。
答案 1 :(得分:0)
$('#attack').click(firstTurn());
这会导致在启动侦听器时调用firstTurn()
,使用其中一个替代方法:
$('#attack').click(firstTurn );
$('#attack').click(function() {
firstTurn()
});