【发布时间】:2021-03-08 22:03:50
【问题描述】:
我遇到了一个非常奇怪的问题。我使用 promises 方法来异步加载图片等等。
loadImage(name, src, width, height) {
return new Promise((resolve, reject) => {
const image = new Image();
this._Assets[name] = image;
image.onload = () => resolve(name);
image.onerror = () => reject(`failed to load ${name}`);
image.src = src;
if (width != void 0) image.width = width;
if (height != void 0) image.height = height;
});
}
如您所见,我正在为图像分配宽度和高度参数,但它不起作用。图像在属性中具有宽度和高度,但是图像本身通过 context.drawimage 使用 naturalwidth 和 naturalheight 显示。但是,当我在加载图像后尝试分配给图像时。它给了我一个错误:无法设置属性宽度,但图像本身被裁剪。我已经尝试立即将参数传递给新图像(宽度,高度),但它没有得到任何地方。 如果我们尝试在drawimage中传递参数
assets[`bg`].width
assets[`bg`].height
然后一切正常
【问题讨论】:
-
试试
image.style.width = width + 'px'; -
也值得检查任何 CSS 样式
-
@Barmar 使用样式,参数设置为原来的高宽
-
@t3dodson 我没有连接任何样式。
-
@Fraybyl 我很确定还有其他问题。我不知道您如何将
_Assets数组附加到 dom。我为您的代码做了一个类似的例子,它正在工作。 jsfiddle.net/c4opfn8a/2
标签: javascript image