JavaScript-在“requestAnimFrame()中在画布上绘制`
当我在JavaScript-在“requestAnimFrame()中在画布上绘制`,javascript,Javascript,当我在requestAnimFrame()(对于单独的画布)中时,我试图在画布上绘制,但所有尝试都失败了。我需要能够在包含requestAnimFrame(drawLoop)的函数内部实时访问canvasunition()中的值。代码如下: (需要明确的是,requestAnimFrame()与requestAnimationFrame()相同) 任何帮助都将不胜感激,因为我已经尝试解决这个问题几天了 解决方案是删除canvasFunction中的事件侦听器 function canvasFun
requestAnimFrame()
(对于单独的画布)中时,我试图在画布上绘制,但所有尝试都失败了。我需要能够在包含requestAnimFrame(drawLoop)
的函数内部实时访问canvasunition()中的值。代码如下:
(需要明确的是,requestAnimFrame()
与requestAnimationFrame()
相同)
任何帮助都将不胜感激,因为我已经尝试解决这个问题几天了 解决方案是删除canvasFunction
中的事件侦听器
function canvasFunction(){
var v = document.getElementById('v');
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
var cw = Math.floor(canvas.clientWidth / 100);
var ch = Math.floor(canvas.clientHeight / 100);
canvas.width = cw;
canvas.height = ch;
draw(this,context,cw,ch);
function draw(v,c,w,h) {
if(v.paused || v.ended) return false;
c.drawImage(v,0,0,w,h);
setTimeout(draw,20,v,c,w,h);
}
}
function drawLoop() {
requestAnimFrame(drawLoop);
requestAnimFrame(canvasFunction);
}
那么,你为什么要每秒添加60个事件侦听器呢?我刚才看到你评论并删除了事件侦听器,现在就开始运行了!谢谢,如果你想在没有听众的情况下发帖,就像你自己发现的一样:)
function canvasFunction(){
var v = document.getElementById('v');
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
var cw = Math.floor(canvas.clientWidth / 100);
var ch = Math.floor(canvas.clientHeight / 100);
canvas.width = cw;
canvas.height = ch;
draw(this,context,cw,ch);
function draw(v,c,w,h) {
if(v.paused || v.ended) return false;
c.drawImage(v,0,0,w,h);
setTimeout(draw,20,v,c,w,h);
}
}
function drawLoop() {
requestAnimFrame(drawLoop);
requestAnimFrame(canvasFunction);
}