【发布时间】:2021-10-01 09:41:19
【问题描述】:
我无法使用 drawImage() 让我的图像显示在 HTML 画布中。我知道文件路径是正确的,因为当我禁用 display: none; 时图像显示得很好
我知道当您尝试在加载图像之前绘制图像时会发生这种情况,您可以通过使用 onload 属性来避免这种情况。
这里是相关的 HTML。
<canvas id='gameScreen'></canvas>
<img id="imgBall"src="assets/images/ball2.png" alt="ball">
<script type="module"src="src/index.js"></script>
这里是相关的 Javascript。
// CANVAS SETUP
let canvas = document.getElementById("gameScreen");
canvas.width = 800;
canvas.height = 600;
let ctx = canvas.getContext("2d");
// DISPLAY BALL
let imgBall = document.getElementById('imgBall');
imgBall.onload = function() {
console.log(imgBall.src + ' successfully loaded');
ctx.drawImage(imgBall, 10, 10);
}
imgBall.onerror = function() {
console.log(imgBall.src + ' failed to load');
}
让我感到困惑的是,我没有从 imgBall.onload 或 imgBall.onerror 收到任何控制台消息。
我对 Javascript 和 canvas 还很陌生,所以如果答案非常明显,我深表歉意。
【问题讨论】:
-
可能在 javascript 有机会添加 onload 处理程序之前图像已经完成加载。
-
顺便说一句,您的 HTML 属性之间缺少空格。另外,如果 img 是 display: none 浏览器是否会费心加载它?
-
此代码在带有随机图片的 sn-p 中运行良好,您的图片有问题吗?检查路径应该是“./assets/images/ball2.png”还是“/assets/images/ball2.png”?
标签: javascript html css html5-canvas