在ubuntu 11.10上的Firefox 8.0中,虽然draw
为false,但仍会调用onload函数img.complete
。我设法用setTimeout
黑客来解决它,但它并不漂亮
我在设置img.onload
之前尝试设置img.src
。虽然我总是这样img.complete
为真,但img.width
为零,img.src
也为空,所以它不起作用。
任何想法如何正确实现?
var draw=function(img,ctx,x,y)
{ if(!img.complete)
{ setTimeout(function(){draw(img,ctx,x,y);},50);
}
else
{
ctx.drawImage(img,x,y);
}
}
for(i=0;i<9;i++)
{ img=new Image();
img.src="/media/"+url[i];
img.onload=(draw)(img,ctx,tile.x*offset[i].x,tile.y*offset[i].y);
}
答案 0 :(得分:3)
Firefox中的complete
属性存在问题。一旦它是true
,它就总是 true
(即使您更改了图像)。
我通过测试新的Image
对象来解决它。
答案 1 :(得分:-1)
每个.complete的新图片都不起作用。
尝试检查img.width是否大于零。