gpt4 book ai didi

javascript - 无法在 'drawImage' : The provided value is not of type ' 上执行 'CanvasRenderingContext2D'

转载 作者:行者123 更新时间:2023-12-02 23:11:41 25 4
gpt4 key购买 nike

我已经为我的游戏循环实现了 rAF(requestAnimationFrame) 设置:

draw: function (x, y) {
setTimeout(function () {
requestAnimationFrame(function() {
Player.draw(150, 150);
});

//drawing code: worked perfectly with setInterval

}, 1000 / 60);
},

它位于 Player 对象的 draw 函数中。我打电话:

Player.draw(Player.x, Player.y);

在代码底部。

根据我在类似问题上看到的情况,在评估之前需要声明图像。我已经使用立即调用的函数在顶部加载了图像:

var images = [];

x = 0;

(function() {
for (let i = 0; i < 20; i++) {
images[i] = new Image();
images[i].src = ('../webgame/assets/images/survivor-idle_shotgun_' + i + '.png');
};
})(); // This worked perfectly with setInterval too

但是我收到此错误:

Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'

它指向这行代码:

ctx.drawImage(images[this.spriteCostumeCount], this.x, this.y, this.width, this.height);

在绘图代码中。

如何使用此 requestAnimationFrame 让玩家 Sprite 动画化以及如何修复此错误?

最佳答案

您需要确保 images[this.spriteCostumeCount]已定义且类型正确。

测试这一点的一个简单方法是添加 console.log(typeof images[this.spriteCostumeCount])就在您调用 drawImage 之前方法。

如果结果未定义,您可以将调用封装在 if 中健康)状况。如果已定义,请确保该值是 drawImage 接受的类型。方法。

关于javascript - 无法在 'drawImage' : The provided value is not of type ' 上执行 'CanvasRenderingContext2D',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57326172/

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