帧率更新时间:2025-12-24 18:13:02
基础信息说明
功能概述:提供修改渲染帧率的能力,并通过 requestAnimationFrame / cancelAnimationFrame 管理逐帧回调。
| 项目 | 说明 |
| 版本要求 | 无 |
| 前提条件 | 无 |
| 使用限制 | 无 |
| 相关教程 | 无 |
方法说明
| 方法名 | 签名 | 同步/异步 | 说明 |
| setPreferredFramesPerSecond | qg.setPreferredFramesPerSecond(Number fps) : void | 同步 | 可以修改渲染帧率。默认渲染帧率为 60 帧每秒。修改后,requestAnimationFrame 的回调频率会发生改变 |
| cancelAnimationFrame | cancelAnimationFrame(Number requestID) : void | 同步 | 取消由 requestAnimationFrame 添加到计划中的动画帧请求 |
| requestAnimationFrame | requestAnimationFrame(Function callback) : void | 同步 | 下一次重绘之前,调用用户提供的回调函数,返回请求 ID |
参数说明
qg.setPreferredFramesPerSecond(Number fps)
| 属性名 | 类型 | 默认值(如有) | 必填 | 说明 |
| fps | Number | - | 是 | 必须,帧率(帧/秒),默认渲染帧率为 60 帧每秒,有效范围 1 ~ 60;用于控制 requestAnimationFrame 触发间隔 |
行为说明:
- 可以修改渲染帧率。默认渲染帧率为 60 帧每秒。修改后,requestAnimationFrame 的回调频率会发生改变。
- 可多次调用,后一次设置会覆盖前一次生效的帧率。
- 超出 1 ~ 60 的帧率值或非法值(如 fps <= 0 或非数字)属于未定义行为,不建议使用。
cancelAnimationFrame(Number requestID)
| 属性名 | 类型 | 默认值(如有) | 必填 | 说明 |
| requestID | Number | - | 是 | 先前调用 requestAnimationFrame() 方法时返回的 ID |
requestAnimationFrame(Function callback)
| 属性名 | 类型 | 默认值(如有) | 必填 | 说明 |
| callback | Function | - | 是 | 下一次重绘的回调函数,无入参 |
返回值:Number,用于标识当前这次注册,可传给 cancelAnimationFrame 用于取消。
返回值说明
- requestAnimationFrame:返回 Number 类型的请求 ID
回调结果说明
| 回调/事件 | 触发时机 | 回调参数 | 说明 |
| requestAnimationFrame 回调 | 在下次进行重绘时执行(受 fps 设置影响) | 无 | 单次触发;通常在回调内再次注册形成动画循环 |
- 当通过 setPreferredFramesPerSecond(fps) 调整帧率后,后续通过 requestAnimationFrame 注册的回调会按新的间隔触发
- cancelAnimationFrame(requestID) 被调用后,对应 ID 的回调不再被触发
示例代码
const start = Date.now();
let myReq;
function step(timestamp) {
const progress = timestamp - start;
d.style.left = `${Math.min(progress / 10, 200)}px`;
if (progress < 2000) {
// 在每次调用 requestAnimationFrame 时,注意更新 requestId
myReq = requestAnimationFrame(step);
}
}
// 请求动画帧
myReq = requestAnimationFrame(step);
// 设置渲染帧率
qg.setPreferredFramesPerSecond(60);
// 取消操作使用的是最后一个 requestId上
cancelAnimationFrame(myReq);注意事项
- setPreferredFramesPerSecond 通过 qg 对象调用;requestAnimationFrame 和 cancelAnimationFrame 是全局函数,直接调用即可(无需 qg. 前缀)
- 在未调用 setPreferredFramesPerSecond 时,默认渲染帧率为 60 帧每秒。调用 setPreferredFramesPerSecond(fps) 后,新的 requestAnimationFrame 会按设置的 fps 触发,即在下次进行重绘时执行
上一篇:画布
下一篇:字体
文档内容是否有帮助?
有帮助
无帮助