我正在制作一款游戏,当你的健康状况低于0时,在keydown上打印出一个div:
" Game_over _ :( _ click_to_continue"逐个字母。我收到一个错误,字母会多次打印出像ggggaaammmeee ooovvveerr。
我设置了一个条件语句,如果状态gameOver为0且在keydown事件之后,则激活setInterval,否则不激活。这在一定程度上解决了这个问题,但是,状态有时会在一秒钟内更改,并且在设置console.log(this.state.gameOver)之后,它有时会在此之前打印两次.state.gameOver实际上会更改为1。它的工作时间很好。
docker run
它仍然有时打印Ggaammee Ovveerr。
答案 0 :(得分:0)
所以我所要做的就是设置一个条件语句,该语句取决于变量是真还是假。一旦触发了setInterval函数,变量就会变为false,这样更多的keydowns就不会导致多次调用setInterval。
var check;
if (check!==false){
check=false;
var arr1 = setInterval(function(){
if(v1===0){b.innerText=""};
b.innerText= b.innerText+s1[v1];v1+=1;
if(v1==s1.length){clearInterval(arr1)}}, 100)}
用鼠标点击屏幕后:
check=true;