创建一个带有setInterval块的JS函数,直到timer消失
Make a JS function with setInterval block until timer disappears
我编写了以下函数作为游戏模拟的一部分:
function initialize() {
setMaxAgents($('#maxAgents').val());
initCanvas();
initSwarm();
renderSwarm();
date = new Date();
overallStartTime = date.getTime();
frames = 0;
timerID = window.setInterval(doFrame, 25);
}
计时器被清除一旦它没有任何渲染。我希望能够运行这个函数n
次,像这样:
for (var i = 0; i < n; i++) {
initialize();
}
然而,就initialize()
而言,它在计时器设置后立即返回,因此运行它10次只是结束,只运行最后一次迭代直到完成。
我如何使initialize()
块,直到计时器运行其过程,以便我可以连续运行功能n
次?
function doFrame() {
date = new Date();
startTime = date.getTime();
moveSwarm();
renderSwarm();
if (numAgents == 0) {
window.clearTimeout(timerID);
//Calculate average frames per second
date = new Date();
var elapsedTime = (date.getTime() - overallStartTime) / 1000;
frameRate = frames / elapsedTime;
} else if (frames % 5 == 0) {
calculateFramerate();
}
showFramerate();
frames++;
}
initialize()
需要递归调用,您需要setTimeout
而不是setInterval
:
function initialize(n) {
setMaxAgents($('#maxAgents').val());
initCanvas();
initSwarm();
renderSwarm();
date = new Date();
overallStartTime = date.getTime();
frames = 0;
if (n > 0) {
timerID = window.setTimeout(function () {
doFrame();
initialize(n--);
}, 25);
}
}
调用initialize()
,参数可以是你想让它运行多少次
相关文章:
- 为什么我的控制器没有启动函数.js脚本
- 在函数js中传递变量
- 如何在单独的文件中调用函数 js.
- 在铯中调用函数.js当事件被尝试时
- 只有setTimeout执行函数.JS
- 为什么图像选择器程序中的这个函数 js 不起作用
- 获取邮件中的信息.php从函数.js解析为manage.html
- 如何从应用程序中调用JS函数.js在Rails4视图中
- Uncatch TypeError: obj.attr 不是函数 JS
- 从 C++ 节点调用 JavaScript 函数.js扩展
- 调用 Backbone 内部的外部函数.js的视图初始化方法
- 如何使用 Scala 创建 JavaScript 函数.js
- 使用带有下划线循环的回调函数.js骨干.js项目不起作用
- 获取字段值的函数-JS
- 函数js不能递归调用自己的函数
- 在函数JS中创建带有地理代码的标记
- 循环内部的函数(js/jquery)
- 我需要帮助将此代码添加到jQuery函数.js文件中
- 未捕获类型:未定义不是函数JS错误
- 停止多个内联函数JS的事件传播