javascript - Canvas 上的图像相互堆叠

标签 javascript html canvas

我正在使用 for 循环将多个图像放在 Canvas 上。 我的 for 循环生成位置

         var posx= i*(50);
         var posy = i*(50);

         img.src = "./path/img.png"; 
         img.onload = function() {
         var canvas = document.getElementById("canvas").getContext('2d');

             canvas.drawImage(this, posx, posy);
} 

即使我正在更改我的 posx 和 posy ,所有图像都绘制在同一位置。 我将它们的 posx、posy 打印到控制台,并且它们在每次迭代时都不同。 有任何想法吗?

谢谢

最佳答案

这是一个范围问题

您需要创建一个闭包以防止所有调用使用相同的(最后一个)posxposy 值。

有点像

img.onload = (function(x,y) { return function() {
        var canvas = document.getElementById("canvas").getContext('2d');
        canvas.drawImage(this, x, y);
    };
  })(posx, posy);

在定义图像对象的 onload 之后设置图像对象的 src 也是明智的做法,以避免缓存图像出现问题。

关于javascript - Canvas 上的图像相互堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351198/

相关文章:

javascript - 在 ReactJS 中每次重新渲染时获取一个新的 FabricJS-Canvas

javascript - 在 Canvas 中填充奇偶 react

javascript - 将表格导出为 excel,将列导出为文本格式

javascript - 类型错误 : Separating username from email address in Google Scripts/JavaScript

javascript - 将字符串附加到元素属性的末尾

java - JTidy 保留 CSS 规则

javascript - 从 html 页面链接到 Controller 方法

空表单字段的 JavaScript 值

javascript - 不允许在最大值和最小值之间输入数字

javascript - 4 盒子里的三 Angular 形,里面有图像