gpt4 book ai didi

javascript - 使用 ctx.drawImage 显示对象数组内的图像

转载 作者:行者123 更新时间:2023-12-03 07:45:08 26 4
gpt4 key购买 nike

它不显示图像,我尝试了所有可能的方法,但无法弄清楚如何。我该怎么办:

1) 如何创建一个新的对象object('20','X',250,100,'img');并指定我要使用哪张图片呢? img.player 或 img.player.src 或只是 img?2) 如何迭代 objectArray 将它们全部显示在 Canvas 中?

15index.html: 38 Uncaught TypeError: Failed to execute 'drawImage'
on 'CanvasRenderingContext2D': The provided value is not of type '(HTMLImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap)'

<!DOCTYPE html>
<html lang="en">

<head>
<title></title>
</head>

<body>

<canvas id="ctx" width="500" height="500" style="border:1px solid #000000;"></canvas>

<script>
var WIDTH = 500;
var HEIGHT = 500;
var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = '30px Arial';

var img = {};

img.player = new Image();
img.player.src = "FireMonster.png"

var objectArray = {};

function object(id, name, x, y, img) {

var object3 = {
x: x,
y: y,
name: name,
id: id,
img: img,

};

objectArray[id] = object3;
}

object('20', 'X', 250, 100, 'img');
object('21', 'P', 150, 150, 'img');

drawingObject = function(something) {

ctx.drawImage(something.img, something.x, something.y);

}

update = function() {

for (var x in objectArray) {

drawingObject(objectArray[x]);

}
}


setInterval(update, 40);
</script>
</body>

</html>

最佳答案

您正在将 'img' 文本传递给 object function 而不是 Image 对象。试试这个:

object('20', 'X', 250, 100, img.player);
object('21', 'P', 150, 150, img.player);

关于javascript - 使用 ctx.drawImage 显示对象数组内的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com