DrawImage不会在第一帧加载

时间:2012-12-05 20:32:48

标签: javascript html5 canvas

我的画布有一个简单的绘图图像,但它不会显示在第一帧上。

这让我很生气我不知道为什么不这样做!!

这是我的剧本:

img = new Image();
img.src = 'images/0.png'; //preLoad the image


window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       || 
          window.webkitRequestAnimationFrame || 
          window.mozRequestAnimationFrame    || 
          window.oRequestAnimationFrame      || 
          window.msRequestAnimationFrame     || 
          function( callback,  element){
            window.setTimeout(callback, 1000 / 60);
          };
})(); //frames per second


function gameUpdate(){ 
    previous = 0;
    requestAnimFrame( gameUpdate ); 
    draw(); 
}

然后draw()函数具有:

//doesn't display on first fame
canvas['canvas1'].ctx.drawImage(img, 100, 150); 

//displays on first frame           
canvas['canvas1'].ctx.fillStyle = "rgba(255, 255, 255, 0.8)";
canvas['canvas1'].ctx.fillRect (30, 30, 55, 50);

FillRect工作得很好但不是第一帧的drawImage,任何想法为什么会这样?

1 个答案:

答案 0 :(得分:2)

我认为您应该通过调用requestAnimFrame函数

之外的gameUpdate 来启动动画循环

requestAnimFrame(gameUpdate)

您可能还需要确保图像实际已加载

var img = new Image();
img.onload = function() {
    // do the draw image here
}
img.src = 'images/0.png'; //preLoad the image