Javascript 为什么我的控制台会说;无法设置属性';src&x27;“未定义”的定义;?
所以我试图用画布创建一个游戏,但其中一个动画有问题。它说它不能将src属性设置为“undefined”。我不明白为什么它是未定义的,所以我需要这方面的帮助。这是我的全部代码:Javascript 为什么我的控制台会说;无法设置属性';src&x27;“未定义”的定义;?,javascript,Javascript,所以我试图用画布创建一个游戏,但其中一个动画有问题。它说它不能将src属性设置为“undefined”。我不明白为什么它是未定义的,所以我需要这方面的帮助。这是我的全部代码: var c = document.getElementById("game"); var ctx = c.getContext("2d"); //variables pX = 0; pY = 0; frame = 0; frames = [] //load image sprites var
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>
var c=document.getElementById(“游戏”);
var ctx=c.getContext(“2d”);
//变数
pX=0;
pY=0;
帧=0;
帧=[]
//加载图像精灵
var player=新图像();
var aster=新图像();
var敌人=新图像();
var max=新图像();
var animatedPlayer=新图像();
player.src=“player.png”;
aster.src=“aster.png”;
敌方.src=“敌方.png”;
max.src=“max.png”;
animatedPlayer.src=“animatedPlayer.png”;
//播放器动画阵列
var playerasets=[player,animatedPlayer];
//小行星阵列
var小行星=[];
小行星[0]={
x:250,
y:40
};
//钥匙
文件。添加的文件列表器(“向下键”,下移);
函数moveDown(){
pY+=2;
}
//播放器更新
函数updatePlayer(){
对于(变量i=0;i
以下是我需要帮助的部分:
//player update
function updatePlayer() {
for (var i = 0; i < playerAssets.length; i++) {
frames[i].src = playerAssets[i];
}
//播放器更新
函数updatePlayer(){
对于(变量i=0;i
好的,如果有人向我解释为什么它说它是未定义的,以及如何修复它,我将非常感激。谢谢你的帮助,我非常感谢你花时间来帮助我
谢谢,
Amiya原因是:帧[i]中没有元素(索引为“i”的对象/数组“帧”)。
您应该在更改src之前检查该元素是否存在。这基本上意味着索引“i”处的元素在数组中,
帧
是未定义的。所以问题是,您是否将任何元素推入数组帧
?我确实看到您正在将变量初始化为空数组,但我没有看到任何帧。问题中的push
语句。