У меня есть публичный массив «bullets», в который я ввожу частный объект пули. Он имеет свойства x и y, и я хочу изменить его свойство y, чтобы каждый раз, когда я нажимаю клавишу пробела, он создает объект пули, толкает его в массив маркеров, а затем вызывает функцию, проходящую через массив, и обновляет каждую пулю y имущество.Проблемы при использовании объектов, прошедших через массив
Однако каждый раз, когда я нажимаю клавишу пробела я получаю сообщение об ошибке:
Uncaught TypeError: Не удается прочитать свойство «у» неопределенной
Это немного выше моего понимания, и я не знаю, как Я могу написать это так, чтобы объекты пули в массиве bullets не были «undefined».
Если у кого есть предложения, я очень благодарен за помощь.
//called every frame
function playGame()
{
movePlayer();
playerShoot();
moveBullet();
}
//PLAYER SHOOT FUNCTION
//If the space key is down, player.shoot is true and the bullet object is created.
function playerShoot()
{
if(player.shoot)
{
var bullet = Object.create(spriteObject);
bullet.width = 16;
bullet.height = 16;
bullet.x = (player.width - bullet.width)/2;
bullet.y = (player.height - bullet.height)/2;
bullets.push(bullet);
player.shoot = false;
}
}
//MOVING THE BULLET
function moveBullet()
{
if(bullets.length !== 0)
{
for(var i = 0; i <= bullets.length; i++)
{
var bullet = bullets[i];
console.log("bullet: " + bullet);
//bullet.y causes error: Uncaught TypeError: Cannot read property 'y' of undefined
if((bullet.y + bullet.height) >= 0)
{
bullet.y--;
}
else
{
bullets.splice[i, 0];
}
}
}
}
//RENDERING THE BULLETS
function renderBullet()
{
if(bullets.length !== 0)
{
for(var i = 0; i <= bullets.length; i++)
{
var bullet = bullets[i];
bullet.render();
}
}
}
Также см http://stackoverflow.com/questions/8004617/javascript-cannot-read-property-bar-of-undefined – britter