Canvas ctx.drawimage() 不工作
Canvas ctx.drawimage() not working
我正在尝试将一些图片渲染成 canvas,但是当我使用我的渲染功能时,图像不会出现。函数是:
function populateSquareImages(){
for(var i = 0,ii = squares.length; i < ii; i++) {
if(squares[i].hasImage) {
var img = new Image();
img.src = "../Content/Squares/images/square_" + squares[i].uniqueId + ".png";
context.drawImage(img, squares[i].x, squares[i].y);
}
}
}
经过一些调试,我确信x和y是准确的。图像文件路径也是正确的。知道这里可能有什么问题吗?
您需要等待图像加载完毕,然后再尝试绘制它。这应该有效:
function populateSquareImages () {
for (var i = 0, ii = squares.length; i < ii; i++) {
if (squares[i].hasImage) {
var img = new Image(),
square = squares[i];
img.src = "../Content/Squares/images/square_" + squares[i].uniqueId + ".png";
img.onload = function () {
context.drawImage(img, square.x, square.y);
};
}
}
}
变量 i
在调用回调函数时不会正确,因此将 squares[i]
的值存储在另一个名为 square
.[=14 的变量中=]
我正在尝试将一些图片渲染成 canvas,但是当我使用我的渲染功能时,图像不会出现。函数是:
function populateSquareImages(){
for(var i = 0,ii = squares.length; i < ii; i++) {
if(squares[i].hasImage) {
var img = new Image();
img.src = "../Content/Squares/images/square_" + squares[i].uniqueId + ".png";
context.drawImage(img, squares[i].x, squares[i].y);
}
}
}
经过一些调试,我确信x和y是准确的。图像文件路径也是正确的。知道这里可能有什么问题吗?
您需要等待图像加载完毕,然后再尝试绘制它。这应该有效:
function populateSquareImages () {
for (var i = 0, ii = squares.length; i < ii; i++) {
if (squares[i].hasImage) {
var img = new Image(),
square = squares[i];
img.src = "../Content/Squares/images/square_" + squares[i].uniqueId + ".png";
img.onload = function () {
context.drawImage(img, square.x, square.y);
};
}
}
}
变量 i
在调用回调函数时不会正确,因此将 squares[i]
的值存储在另一个名为 square
.[=14 的变量中=]