- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
引用这个 fiddle - http://jsfiddle.net/rnqLfz14/28/
[此代码不是我的 - http://www.isaacsukin.com/news/2015/01/detailed-explanation-javascript-game-loops-and-timing ]
//....
function stop() {
running = false;
started = false;
cancelAnimationFrame(frameID);
}
//...
function mainLoop(timestamp) {
// Throttle the frame rate.
if (timestamp < lastFrameTimeMs + (1000 / maxFPS)) {
frameID = requestAnimationFrame(mainLoop);
return;
}
delta += timestamp - lastFrameTimeMs;
lastFrameTimeMs = timestamp;
begin(timestamp, delta);
if (timestamp > lastFpsUpdate + 1000) {
fps = 0.25 * framesThisSecond + 0.75 * fps;
lastFpsUpdate = timestamp;
framesThisSecond = 0;
}
framesThisSecond++;
var numUpdateSteps = 0;
while (delta >= timestep) {
update(timestep);
delta -= timestep;
if (++numUpdateSteps >= 240) {
panic();
break;
}
}
draw(delta / timestep);
T.textContent = timestamp;
if (timestamp >= 6000.0) {
T.textContent = "Stopped!";
stop();
}
end(fps);
frameID = requestAnimationFrame(mainLoop);
}
//...
cancelAnimationFrame 函数没有停止动画循环。有什么建议吗?我已经摸索了很长时间了,请提出任何建议,我们将不胜感激。
最佳答案
当满足 stop()
的条件时,将调用 stop()
但代码会继续执行,因此将请求新的 rAF。
只需在 stop 调用后添加一个 return 来防止这种情况发生(或使用 else
):
...
if (timestamp >= 6000.0) {
T.textContent = "Stopped!";
stop(); // stop() is just a sub-routine here and will continue after being called
return; // <--- here
}
...
关于javascript - 为什么 cancelAnimationFrame 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290404/
我不明白为什么 API 包含 cancelAnimationFrame(),因为我可以通过像这样设置 continue 变量来停止动画: function draw(timestamp) { if
这可能是一个非常简单的问题,但我刚刚开始玩请求动画帧,我需要一些指导。我在网上发现,请求动画帧最安全(就浏览器兼容性而言)的语法是这样的代码: window.requestAnimFrame
cancelAnimationFrame() 在对象的方法内部调用时似乎不起作用。我已尝试将 this 值绑定(bind)到回调函数(as demonstrated on MDN 和 setTimeo
引用这个 fiddle - http://jsfiddle.net/rnqLfz14/28/ [此代码不是我的 - http://www.isaacsukin.com/news/2015/01/det
为了学习,受 jQuery 的启发,我正在为所有 HTMLElement 制作一个动画函数原型(prototype)。动画启动得很好,但我希望它在 requestAnimationFrame 的 ti
我正在尝试使用 MapBoxGL 为相机旋转设置动画,同时提供暂停旋转并通过复选框回调重新启动旋转的选项。 “暂停”/“停止”旋转效果很好,但“重新启动”似乎会在动画从未暂停过的情况下在应有的位置拾取
This is what I'm working on.如果你滚动到 JS 第 63 行,你会看到我遇到困难的功能。我正在尝试用 requestAnimationFrame 替换我的 setInter
我已经盯着我的代码看了很长时间,但我似乎不明白发生了什么。每当游戏结束时,我都会执行 cancelAnimationFrame 来停止游戏。然后我再次启动菜单。 现在的问题是,当我再次调用 reque
背景: 当使用 setInterval 或 setTimeout 时,我们会收到一个 ID 来取消/清除操作。 setInterval/setTimeout: const timeoutId = se
我正在创建一个动画并将其设置为变量 myAnim = requestAnimFrame(duckHunt); 我想使用 cancelAnimationFrame(myAnim); 停止它 它适用于 F
我正在构建一个类似于 Chicken Invaders 的小游戏使用 JS Canvas 。目前,当敌人击中你的船时,我的船爆炸的效果一直困扰着我。我正在尝试在单独的文件中单独创建效果。 我的想法是,
我是一名优秀的程序员,十分优秀!