[英]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.