Javascript 单击事件时在条件语句中计算的切换布尔变量
我正在切换布尔变量“userTurn”。有两个函数可以设置“userTurn”的值:Javascript 单击事件时在条件语句中计算的切换布尔变量,javascript,if-statement,dynamic,onclick,Javascript,If Statement,Dynamic,Onclick,我正在切换布尔变量“userTurn”。有两个函数可以设置“userTurn”的值: runGame(),它在播放当前回合中的最后一个声音后将“userTurn”设置为true buttonClick(),仅当“userTurn”为true时才应执行。按钮在用户成功复制当前模式或用户出错后,单击将“userTurn”设置为false 我正在计算click事件内部的条件语句中“userTurn”的值 $(".quarter").on('click', function(){ if( use
$(".quarter").on('click', function(){
if( userTurn===true && isOn===true){
var color = $(this).attr('id');
clearTimeout(buzz);
buttonClick(color);
}
})
用户成功复制当前模式后,或者如果用户出错,“userTurn”设置为false。我遇到的问题是,在“userTurn”设置为false之后,条件语句中的代码仍在执行。目标是使“.quarter”仅在“userTurn”为真时才可单击。为什么即使“userTurn”为false,单击“.quarter”时buttonClick()函数仍在执行要开始游戏,请单击“开-关”,然后单击“开始”。计时很慢,因此您必须等待模式播放,然后按播放顺序单击按钮。在播放第一个声音后可以看到问题。从那时起,用户所做的任何点击都将播放声音并点亮按钮,即使游戏正在播放模式且“userTurn”为false时也是如此。还要注意的是,这仍然是一项正在进行的工作,我正在处理一些其他的bug,例如用户的第一个回合将不会亮起或播放声音,但是选择将被推入正确的数组中,游戏将根据您的选择正确进行。我知道这是很多信息,但我被困在这,所以任何反馈将非常感谢。谢谢 您正在使用
按钮单击
来处理单击按钮的操作,但在按钮单击
中,您正在为每个按钮设置鼠标点
和鼠标点
事件侦听器。由于各个按钮都有自己的mouseup
和mousedown
侦听器,因此无论是否再次调用buttonClick
,都会发生事件
您还必须检查每个事件处理程序中的userTurn
是否为true
,以防止它们触发。另外,最好将这些设置在按钮单击
之外,这样就不会在每次调用按钮单击
时都添加新的侦听器
function runGame(){
if(isOn===true){
userTurn = false;
count();
playPattern(order, index);
if(index===counter-1&&userTurn===false){
userTurn=true;
clearInterval(play);
buzz = setTimeout(buzzer, 10000);
}else{
index++;
}
} else {
clearInterval(play);
clearTimeout(buzz);
}
}
function buttonClick(color){
var yellowSound = document.getElementById("horseSound");
var redSound = document.getElementById("endFx");
var greenSound = document.getElementById("westernRicochet");
var blueSound = document.getElementById("robotBlip");
$("#red").mousedown(function(){
$("#red").css("background-color", "#ff4d4d");
redSound.play();
});
$("#red").mouseup(function(){
$("#red").css("background-color", "#ff0000");
redSound.pause();
});
$("#blue").mousedown(function(){
$("#blue").css("background-color", "#0000e6");
blueSound.play();
});
$("#blue").mouseup(function(){
$("#blue").css("background-color", "#000099");
blueSound.pause();
});
$("#green").mousedown(function(){
$("#green").css("background-color", "#00e600");
greenSound.play();
});
$("#green").mouseup(function(){
$("#green").css("background-color", "#009900");
greenSound.pause();
});
$("#yellow").mousedown(function(){
$("#yellow").css("background-color", "#ffff4d");
yellowSound.play();
});
$("#yellow").mouseup(function(){
$("#yellow").css("background-color", "#ffff00");
yellowSound.pause();
});
if(color===order[compareIndex]){
userPattern.push(color);
console.log(userPattern, "match");
buzz = setTimeout(buzzer, 10000);
compareIndex++;
if(userPattern.length===counter){
userTurn=false;
compareIndex=0;
index=0;
counter++;
count();
userPattern.length=0;
play = setInterval(runGame, 2000);
clearTimeout(buzz);
}
} else {
userTurn=false;
console.log('don\'t match');
clearTimeout(buzz);
index=0;
compareIndex = 0;
userPattern.length=0;
buzz = setTimeout(buzzer, 1);
}
}