【发布时间】:2017-11-28 18:27:26
【问题描述】:
我正在将图像加载到我的 albImg 数组中。
在我的循环中我然后这样做:
for(var j = 1; j < albImg.length; j++){
if(albImg[j].complete == true && albImg[j].width > 0){
loadedimages++;
}
}
以确保我的所有图像都已加载。 然后我像这样调用我的 flipImg() 函数:
if(loadedimages == albImg.length-1){
flipImg();
}
然后我翻转图像并
ctx2.save();
ctx2.scale(-1, 1);
for (var i = RszSpriteCount; i < sprites.length; i++) {
ctx2.drawImage(albImg[sprites[i][0]], sprites[i][1], sprites[i][2], sprites[i][3], sprites[i][4], 0 - (sprites[i][1] + sprites[i][3]), sprites[i][2], sprites[i][3], sprites[i][4]);
}
ctx2.restore();
var flipSz = albImg.length;
albImg[flipSz] = new Image();
albImg[flipSz].src = cnv2.toDataURL();
这就是我的问题开始的地方。
我创建的新图像 - albImg[5] - 在加载之前无法显示。 但它的创建就像它已经加载一样。
也就是说:
albImg[5].width 在我可以显示之前已经设置(为 750)。 albImg[5].complete 设置为 true,然后我才能显示它。 albImg[5].onload = ctx.drawImage(albImg[5], 0, 0);将在加载之前尝试绘制图像。
如何在显示之前检查我的翻转图像是否真的已加载?在Javascript中?
(由于情况我没有为此使用 jQuery)
请帮忙。
【问题讨论】:
-
为什么
onload会在图片加载前尝试显示?调用onload表示图片已加载。
标签: javascript image canvas todataurl