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