Javascript游戏循环-如何知道循环外的函数经过了多少时间
Javascript Game Loop - How to know how much time has passed in an function outside the loop
你必须知道,我对这个用javascript开发的新游戏还是个新手。
首先我有这个游戏循环
GameLoop = {
//Insert more members here if needed
id : null,
run : function(options) {
var now,
dt = 0,
//last = timestamp(),
last = Date.now(),
slow = options.slow || 1, // slow motion scaling factor
step = 1 / options.fps || 60,
slowStep = slow * step,
update = options.update,
render = options.render;
function frame() {
//now = timestamp();
now = Date.now();
dt = dt + Math.min(1, (now - last) / 1000);
while(dt > slowStep) {
dt = dt - slowStep;
update(step);
}
render(dt / slow);
last = now;
this.id = requestAnimationFrame(frame, options.canvas);
}
this.id = requestAnimationFrame(frame);
},
pause : function() {
cancelAnimationFrame(this.id);
}
};
我用互联网上的一些文档和教程创建了它。我想知道的是,我怎样才能得到一个函数,每1秒或每60帧改变一个状态变量。例如,我可以在Draw方法中包含以下内容:
//Moves enemy towards the player 30px every second
function moveEnemy() {
if(one Second Has Passed Since Last Time We Moved) {
enemy.xPosition += '30px';
}
}
这只是我想要实现的一个假设例子,我希望有经验的人能帮助我。如果你需要更多信息,请告诉我,或者如果我出于某种原因需要更新我的问题。
谢谢!
如果你的要求是每秒移动敌人一次,那么不需要在帧循环内。
var enemyMoverInterval = setInterval(
function moveEnemy() {
enemy.xPosition += '30px';
}
}, 1000);
编辑:如果你真的想把它放在游戏循环中。。。
var enemyLastMoved = new Date();
GameLoop = {
// ...
function frame() {
// ....
if (now - enemyLastMoved > 1000) {
enemy.xPosition += '30px';
enemyLastMoved += 1000;
}
// ...
或者一种混合方法:
var enemyMustMove = false;
setInterval(function() {
enemyMustMove = true;
}, 1000);
在游戏循环中:
// ....
if (enemyMustMove) {
enemyMustMove = false;
enemy.xPosition += '30px';
}
PS enemy.xPosition += '30px'
可能无法执行您想要的操作。
相关文章:
- JavaScript/Jquery:一个特殊用途的for循环函数
- 为循环函数中的元素指定单击
- Jquery下一个和上一个按钮循环函数
- 循环函数(Javascript回调帮助)
- 循环函数不起作用
- 使用ajax调用循环函数
- 在Javascript中修改循环函数的参数
- 如何循环函数数组并在单击时一次执行一个
- 设置超时可以保存我的循环函数不被视为无响应
- 具有超时的循环函数
- j查询如何在一系列延迟后循环函数
- 如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
- for 循环函数似乎未运行
- 对于内部循环函数(新手)
- 循环函数会导致它在 javascript 中无响应
- 循环函数
- 如何优化循环函数
- JS拒绝循环函数
- 中断循环函数
- 在 JavaScript 中循环函数可以吗?