msh*_*ang 5 javascript canvas callback setinterval clearinterval
我有一个setInterval显示动画的循环调用。
当我clearInterval响应用户输入时,队列中可能有一个或多个循环回调。如果我直接在clearInterval语句之后放置一个函数调用,则函数调用首先完成(将某些内容打印到屏幕上),然后执行排队循环回调,删除我想要打印的内容。
请参阅下面的代码。
function loop() {
// print something to screen
}
var timer = setInterval(loop(), 30);
canvas.onkeypress = function (event) {
clearInterval(timer);
// print something else to screen
}
Run Code Online (Sandbox Code Playgroud)
处理这个问题的最佳方法是什么?把延迟放在// print something else to screen? 在循环内进行新打印?
编辑:感谢您的回答。为了将来参考,我的问题是触发额外打印的事件被隐藏在循环中,因此一旦执行,控制权将交还给未完成的循环,然后将其覆盖。干杯。
您还可以使用标志来忽略任何排队的函数:
var should;
function loop() {
if(!should) return; // ignore this loop iteration if said so
// print something to screen
}
should = true;
var timer = setInterval(loop, 30); // I guess you meant 'loop' without '()'
canvas.onkeypress = function (event) {
should = false; // announce that loop really should stop
clearInterval(timer);
// print something else to screen
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8346 次 |
| 最近记录: |