[英]Why does my console say “Cannot set property 'src' of undefined”?
So I'm trying to create a game with Canvas and I have a problem with one of the animations. 因此,我尝试使用Canvas创建游戏,但其中一个动画存在问题。 It says it can't set the src property of "undefined". 它说它不能将src属性设置为“ undefined”。 I don't see why it is undefined, so I need help with this bit. 我不明白为什么它没有定义,所以我需要这方面的帮助。 Here's my whole code: 这是我的整个代码:
var c = document.getElementById("game");
var ctx = c.getContext("2d");
//variables
pX = 0;
pY = 0;
frame = 0;
frames = []
//load image sprites
var player = new Image();
var aster = new Image();
var enemy = new Image();
var max = new Image();
var animatedPlayer = new Image();
player.src = "player.png";
aster.src = "aster.png";
enemy.src = "enemy.png";
max.src = "max.png";
animatedPlayer.src = "animatedPlayer.png";
// player animation array
var playerAssets = [player, animatedPlayer];
//asteroid array
var asteroid = [];
asteroid[0] = {
x : 250,
y : 40
};
//keys
document.addEventListener("keydown",moveDown);
function moveDown(){
pY += 2;
}
//player update
function updatePlayer() {
for (var i = 0; i < playerAssets.length; i++) {
frames[i].src = playerAssets[i];
}
ctx.drawImage(frames[frame],pX,pY,54.6,52.6);
frame += 1 % frames.length;
};
//function
function draw() {
ctx.clearRect(0,0,c.width,c.height);
setInterval(updatePlayer, 1000/30);
for (var i = 0; i < asteroid.length; i++) {
ctx.drawImage(aster, asteroid[i].x, asteroid[i].y, 29.6, 29.3);
setInterval(asteroid[i].x--, 400);
if(asteroid[0].x == 225) {
asteroid.push({
x : c.width,
y : Math.floor(Math.random())
});
}
}
requestAnimationFrame(draw);
}
</script>
Here's the part that I need help with: 这是我需要帮助的部分:
//player update
function updatePlayer() {
for (var i = 0; i < playerAssets.length; i++) {
frames[i].src = playerAssets[i];
}
Okay, so I would really appreciate if someone explains to me why it's saying it's undefined and how to fix it. 好的,如果有人向我解释为什么它是未定义的以及如何修复它,我将非常感激。 Thanks for your help and I really appreciate you taking your time to help me. 感谢您的帮助,非常感谢您抽出宝贵的时间来帮助我。
Thanks, Amiya 谢谢Amiya
Reason is: you don't have element in frames[i] (object/array "frames" with index "i"). 原因是:您在frame [i]中没有元素(对象/数组“ frames”的索引为“ i”)。 You should check existence of this element before changing the src. 更改src之前,应检查此元素是否存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.