Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Fabric.js中停止/取消requestAnimFrame()_Javascript_Video_Fabricjs_Requestanimationframe - Fatal编程技术网

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

Javascript 如何在Fabric.js中停止/取消requestAnimFrame(),javascript,video,fabricjs,requestanimationframe,Javascript,Video,Fabricjs,Requestanimationframe,我正在尝试将视频添加到Fabric.js,我已经完成了 但有一个问题: 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 rend

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

但有一个问题:

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);
  }

});
如何停止或取消
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);
  }

});

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


导致高CPU负载

我现在知道了:
cancelRequestAnimFrame()

window.cancelRequestAnimFrame=(函数(){
return window.cancelAnimationFrame||
window.webkitCancelRequestAnimationFrame||
window.mozCancelRequestAnimationFrame||
window.oCancelRequestAnimationFrame||
window.msCancelRequestAnimationFrame||
清除超时
})();
var canvas=newfabric.canvas('c');
var videoEl=document.getElementById('video');
var video=新结构图像(videoEl);
canvas.add(视频);
video.getElement().play();
var请求;
var render=function(){
canvas.renderAll();
request=fabric.util.requestAnimFrame(渲染);
var current_time=视频EL.currentTime;
如果(当前时间>=5){
暂停;

cancelRequestAnimFrame(request);将您的
requestAnimFrame
调用包装成
if(flag)
(位于
render
中的调用,因为第一个调用只会将其执行推到下一个帧,如果您想立即执行
render
,则实际上不需要该调用。)我收到错误:在.ts文件顶部添加Window.cancelRequestAnimFrame函数时,angular 6中的类型“Window”上不存在属性“cancelRequestAnimFrame”。