繁体   English   中英

函数被多次调用

[英]Function is called more than once

我正在创建类似于《吃豆人》的游戏。 游戏板放置在名为“ 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

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

使用setInterval而不是循环确定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 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)停止该过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM