问题标签 [requestanimationframe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5333 浏览

javascript - requestAnimationFrame 并知道浏览器何时重新绘制?

有没有办法知道浏览器何时正在运行requestAnimationFrame

例如,当我从正在运行的选项卡切换选项卡时requestAnimationFrame,该功能停止执行,当我切换回来时它继续执行,处理此问题的最佳方法是什么?

0 投票
3 回答
4240 浏览

javascript - requestAnimationFrame 垃圾回收

我正在使用 Chrome Dev Tools v27 中的时间轴分析以下代码的内存使用情况。

注意它很简单。但最终我看到一个牙齿图案出现,表明垃圾收集器正在回收内存。

Chrome 开发工具时间线

raf 默认会创建垃圾对象吗?有没有办法避免这种情况?谢谢。

0 投票
1 回答
438 浏览

javascript - window.requestAnimationFrame 使用对象和 this 关键字

我正在学习使用 javascript 的物理引擎的基础知识,并希望将所有引擎和游戏数据保存在一个对象中,但是在递归调用绘图函数为场景设置动画时无法使用“this”关键字。我可以成功调用单独的绘图函数,但实现多个对象动画并不容易

这是一个带有工作测试平台的简单代码笔。

这是页面

谢谢你的帮助,

安德鲁

0 投票
1 回答
491 浏览

html - 对象中的 requestAnimationFrame 类型错误

嗨,我正在尝试为我的游戏使用 requestAnimationFrame,实际上我在下面使用了这段代码,但正如您所见,“.bind()”为每个循环创建了一个新函数,这会减慢我的游戏速度......我正在寻找一个“高效”解决方案以获得最佳性能,提前谢谢您:D

上面的代码可以工作,但速度很慢。相反,这个“标准”代码给了我“类型错误”:


我还发现我尝试了这个问答:requestAnimationFrame attach to App object not Window只工作一次然后给出相同的“类型错误”:(

如果您不相信我,请尝试: http: //jsfiddle.net/ygree/1 :'(

0 投票
1 回答
495 浏览

javascript - 使用 requestAnimationFrame 动画游戏

我尝试使用 requestAnimFrame 制作一些简单的游戏,但动画不起作用,我不知道为什么。也许有人可以帮忙?这是代码:

update(dt)功能球不移动,我不知道为什么......

0 投票
2 回答
4197 浏览

setinterval - 如何用 requestAnimationFrame 替换 setInterval

这是我的情况,我需要加快函数运行时间,所以 setInterval 不是一个明智的选择,对吧?因为每次至少要花费 4ms。

那么,我可以将 setInterval 函数更改为 requestAnimationFrame,但我不太明白 requestAnimationFrame 是如何工作的。

例如

以及如何应用 requestAnimationFrame?

0 投票
1 回答
489 浏览

gwt - gwt canvas context.drawImage 很慢

我正在使用 GWT 画布全屏绘制 50 个相同的 16x16 图像(在 draw() 中)requestAnimationFrame,主循环如下:

我使用ClientBundleas存储图像DataResources。它们被转换为图像并转换为ImageElement能够调用 context.draw 的图像。

渲染 50 张图像之前的 FPS 约为 60FPS。当它们被渲染时,FPS 大约是 20FPS。(在 chrome 和 mozilla 中)在 DEV 模式下。

我认为图像加载可能有问题。

0 投票
1 回答
1357 浏览

javascript - 在谷歌地图 api v3 中使用请求动画帧为地图标记设置动画

我已经设法使用 setTimeout 在 google maps api v3 中的路线周围为 google map 标记设置动画,但我想找到一种使用请求动画帧的方法。但是,当我尝试这样做时 - 标记似乎只是从路径的开头跳到了结尾,没有动画。有什么想法我会误入歧途吗?这是我使用 setTimeout 的代码的相关部分,但您也可以在github中下载/查看文件:

我试图用请求动画帧做的是从creativeJS放置这段代码:

注释掉 setTimeout 并取消注释 requestanimationframe 行。但这没有用。

我想知道您是否无法传递参数,所以我将函数 animateRun 更改为不接受任何参数,而是引用一个全局变量 curDist,但这仍然不起作用。我不确定还有什么可以尝试或可能出了什么问题。我可以在 requestanimationframe 中追踪调用并且它有效 - 我什至输入了一种模数作为计时器来尝试减慢它(var frameCount = 0,frameCount 在每次调用 animateRun 时增加一次。如果 framecount%100 = 0 ,在 animateRun 中做所有的事情),但这也不起作用。该函数看起来像这样:

感谢您对如何解决此问题有任何想法。

0 投票
2 回答
1213 浏览

javascript - 用 requestAnimationFrame 画弧

小提琴

我在做什么:我正在使用设定的间隔从弧中绘制一个圆。绘制一个圆后,我正在绘制另一个半径稍微增加的圆,如小提琴所示。

我想要做的:我想实现相同的功能,但是应该在 1 分钟内完成一个圆圈(即画一个圆圈需要 60 秒。)使用requestAnimationFrame并避免 setInterval。

我知道 RAF 是什么,但无法实施

60 秒...英国皇家空军...循环。?? 我的代码:

仅针对 Ken 的更新问题

1)如何将所有内容乘以 2(即比例)使一切变得更清晰。

2)我理解setInterval(anim,120);//这部分..ratio..这就是为什么循环在60秒完成?再次,我在使用 setInterval.Reason 时总是怀疑,因为它确实会在一段时间后提供混蛋。但在这种情况下不是。我不想让我的动画停止,这在使用 RAF 时总是发生。但是 raf 再次对优化非常有用。所以那里有点混乱,但我想我会采用 setInterval 的方式。

3)这个问题有点难,我现在正在研究它。如果我做不到,我会接受你的建议。它处理一些 json,创建多个实例并在数据停止时停止动画.我明天试试,现在太累了。

感谢肯的回答!正是我想要的。

0 投票
1 回答
2323 浏览

javascript - requestAnimationFrame 计算经过的时间

下面是控制动画时间的 JS/WebGL 代码片段,其中 requestAnimFrame通常是shim。在 FireFox 和 Safari 下运行得很好。在 Chrome 下,第elapsedTime2 帧及以后的帧变为负数。显然(根据这篇文章webkitRequestAnimationFrame没有将currentTime参数传递给draw回调!?!计算经过时间的正确跨浏览器方法是什么!?这太疯狂了!

实际的 WebGL 程序在这里。在 FireFox 和 Safari 下,您将看到一个动画循环——在 Chrome 下,您将看到动画一直播放(直到我修复它)。