переключить что-то только один раз - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать игру javascript, но я столкнулся с проблемой, я хочу убедиться, что если оператор if = true, он выполняет функцию, теперь она работает, но продолжает выполнять ее снова и снова, и я нужно выполнить его только один раз.

это то, что у меня есть сейчас:

//this is the js
setInterval(function () {
    var characterTop = parseInt(
      window.getComputedStyle(character).getPropertyValue("top")
    )
    var characterLeft = parseInt(
      window.getComputedStyle(character).getPropertyValue("left")
    )
  
    if (characterTop > 200 && characterLeft > 700) {
      
      document.getElementById("win").classList.toggle("active")
      
      {stopMoveLeft();} 
      {stopMoveRight();}
      {stopMoveDown();} 
      {stopMoveUp();}   
    }
}, 50);

/*this is the css*/
#win {
    height: 100%;
    width: 100%;
    background-color: black;
    position: fixed;
    top: 600px;
    transition: all 500ms linear;

}

#win.active {
    top: 0px;
}
<!--this is the html-->
<div id="win"></div>

знает ли кто-нибудь, как убедиться, что он постоянно функция один раз?

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Попробуйте следующее:

var intervalVar = setInterval(function () {
    var characterTop = parseInt(
      window.getComputedStyle(character).getPropertyValue("top")
    )
    var characterLeft = parseInt(
      window.getComputedStyle(character).getPropertyValue("left")
    )
  
    if (characterTop > 200 && characterLeft > 700) {
      
      document.getElementById("win").classList.toggle("active")
      
      {stopMoveLeft();} 
      {stopMoveRight();}
      {stopMoveDown();} 
      {stopMoveUp();}

      clearInterval(intervalVar);
    }
}, 50);
0 голосов
/ 13 июля 2020

Вы можете добавить логическое значение, чтобы проверить, выполнялся ли код уже

var done = false;

//this is the js
setInterval(function () {
    var characterTop = parseInt(
      window.getComputedStyle(character).getPropertyValue("top")
    )
    var characterLeft = parseInt(
      window.getComputedStyle(character).getPropertyValue("left")
    )

    if (characterTop > 200 && characterLeft > 700 && !done) {
  
      done = true;
      document.getElementById("win").classList.toggle("active")
  
      {stopMoveLeft();} 
      {stopMoveRight();}
      {stopMoveDown();} 
      {stopMoveUp();}   
    }
}, 50);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...