函数被多次调用

Function is called more than once

本文关键字:调用 函数      更新时间:2023-09-26

我正在创建一个类似于吃豆子的游戏。游戏板保存在一个名为"testLevel"的数组中。在这里,我正在尝试对幽灵进行编码,并使它们每 5 秒移动一个方格。发生的情况是,每 5 秒将调用一次 ghost 函数,但程序运行得如此之快,以至于该函数在那一秒内被多次调用,而我只希望它运行一次,然后直到另外 5 秒才再次运行。我该如何解决这个问题。谢谢!

var testLevel = [[0,0,0,0,0,0],[0,1,0,1,1,0],[0,0,1,0,1,0],[0,0,1,0,1,0],[0,1,4,1,1,0],[0,0,0,0,0,0]];
function draw() {
      background(255);
      var sec = second();
      if (sec % 5 == 0) {
        ghost(); 
      }
    }  
     function ghost(){
      for(b=1; b <7 ;b++){// column 
         for (a=5; a>-1; a--){// row 
           if (testLevel[a][b] == 4 && testLevel [a-1][b] !== 0){
               c = a;
               d = b;
               printBoard();
                   }
              } 
           }
            testLevel[c][d] =1;
            testLevel[c-1][d] = 4;
       }

在我看来,你想使用某种定时功能,或者


setTimeout(function, milliseconds)---在等待指定的毫秒数后执行函数。


setInterval(function, milliseconds)---与 setTimeout() 相同,但连续重复函数的执行。

(从 http://www.w3schools.com/js/js_timing.asp)

在这种情况下,setInterval(ghost, 5000) draw()应该可以解决问题。

与其循环来确定 5 秒,不如使用 setInterval:

var testLevel = [[0,0,0,0,0,0],[0,1,0,1,1,0],[0,0,1,0,1,0],[0,0,1,0,1,0],[0,1,4,1,1,0],[0,0,0,0,0,0]];
function draw() {
  background(255);
  var interval = setInterval(ghost, 5000)
 function ghost(){
  for(b=1; b <7 ;b++){// column 
     for (a=5; a>-1; a--){// row 
       if (testLevel[a][b] == 4 && testLevel [a-1][b] !== 0){
           c = a;
           d = b;
           printBoard();
               }
          } 
       }
        testLevel[c][d] =1;
        testLevel[c-1][d] = 4;
   }

注意:您可以使用clearInterval(interval)来停止该过程。