【发布时间】:2012-01-30 23:20:25
【问题描述】:
这可能是一个奇怪的解释: 我想动态创建一个画布集合,其中包含一个图像。这会显示(经过很多麻烦并摆脱了 onload 事件)但是当我尝试刷新页面时,有时屏幕上什么也没有。 当我使用 onload 事件(等到图像加载完毕)时,它不会显示或显示最后一个画布中的所有内容。
这是一个sn-p的代码:
var sources = []//the array that contains the images
var divCanvas = document.getElementById('showcase-wrapper')
for(var i=0; i<sources.length; i++){
img = new Image()
img.src = sources[i]
canvas = document.createElement('canvas')
$(canvas).attr('id', i)
canvas.height=300
canvas.width=200
var context = canvas.getContext('2d');
//onload commented out allows expected display
//img.onload = function() {
context.drawImage(img, 0, 0);
//}
divCanvas.appendChild(canvas)
}
我看到很多帖子看起来像我的,尝试了很多,但都无济于事。
【问题讨论】:
-
您必须使用 onload 事件,否则无论您的图像是否已加载,这都是一个竞争条件。您可能只是在以前的代码中遇到了错误。
-
刚刚尝试使用 onload 并且仅显示最后一个图像,其他图像未显示,即使创建了画布以将它们显示到...
标签: javascript html canvas for-loop drawimage