gpt4 book ai didi

javascript - 如何在 Fabric.js 中停止/取消 requestAnimFrame()

转载 作者:行者123 更新时间:2023-11-29 19:15:18 28 4
gpt4 key购买 nike

我正在尝试将视频添加到 Fabric.js,我已经完成了。

但有一个问题:

如何停止或取消requestAnimFrame()

示例:

var canvas = new fabric.Canvas('c');
var videoEl = document.getElementById('video');
var video = new fabric.Image(videoEl);

canvas.add(video);
video.getElement().play();

fabric.util.requestAnimFrame(function render() {
canvas.renderAll();
fabric.util.requestAnimFrame(render);

var current_time = videoEl.currentTime;
if(current_time >= 5) {
videoEl.pause();
console.log(current_time);
}

});

https://jsfiddle.net/l2aelba/kro7h6rv/

这是视频将在 5 秒后停止。我将停止/取消 requestAnimFrame

导致高 CPU 负载

最佳答案

我现在明白了: cancelRequestAnimFrame()

window.cancelRequestAnimFrame = (function(){
return window.cancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame ||
window.oCancelRequestAnimationFrame ||
window.msCancelRequestAnimationFrame ||
clearTimeout
})();

var canvas = new fabric.Canvas('c');
var videoEl = document.getElementById('video');
var video = new fabric.Image(videoEl);

canvas.add(video);
video.getElement().play();

var request;
var render = function() {
canvas.renderAll();
request = fabric.util.requestAnimFrame(render);
var current_time = videoEl.currentTime;
if(current_time >= 5) {
videoEl.pause();
cancelRequestAnimFrame(request); <--- This
}
}

videoEl.play();
fabric.util.requestAnimFrame(render);

演示: https://jsfiddle.net/l2aelba/kro7h6rv/2/

关于javascript - 如何在 Fabric.js 中停止/取消 requestAnimFrame(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35841147/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com