我在JavaScript中重现了生命游戏。它有效,但在计算上无效。我有这个功能,可以在几代人之间等待。
var speed = 500; //milliseconds
function live() {
middleMan = setInterval(processGeneration, speed);
if (!dead) {
window.clearInterval(middleMan);
live();
}
}
500毫秒没有任何事情发生,然后是计算任务的海啸。这给出了死时间和滞后的讽刺组合。我怎样才能使用500毫秒?
答案 0 :(得分:0)
您可以使用
function live() {
processGeneration();
if (!dead) {
setTimeout(live, speed);
}
}
live();
或
function live() {
processGeneration();
if (dead) {
clearInterval(timer);
}
}
var timer = setInterval(live, speed);
或
function live() {
processGeneration();
if (!dead) {
requestAnimationFrame(live);
}
}
requestAnimationFrame(live);
但请注意,如果您使用setInterval
,则对live
的每次调用都必须少于speed
。