我正在制作一款类似Pacman的游戏。游戏板保存在一个名为“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;
}
答案 0 :(得分:0)
听起来我想要使用某种计时功能,
setTimeout(function, milliseconds)
---在等待指定的毫秒数后执行一个函数
或
setInterval(function, milliseconds)
---与setTimeout()相同,但是连续重复执行该函数。
(来自http://www.w3schools.com/js/js_timing.asp)
在这种情况下,setInterval(ghost, 5000)
中的draw()
应该可以解决问题。
答案 1 :(得分:0)
使用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)来停止该过程。