在下一次keydown之前改变状态

时间:2018-04-15 16:24:34

标签: reactjs setinterval

我正在制作一款游戏,当你的健康状况低于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。

1 个答案:

答案 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;