Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用通过数组传递的对象时出现问题_Javascript_Arrays_Undefined - Fatal编程技术网

Javascript 使用通过数组传递的对象时出现问题

Javascript 使用通过数组传递的对象时出现问题,javascript,arrays,undefined,Javascript,Arrays,Undefined,我有一个公共“子弹”数组,我正在将一个私有子弹对象推入其中。它有x和y属性,我想更改它的y属性,这样每次我按空格键时,它都会创建一个bullet对象,将其推送到bullets数组中,然后调用一个函数,在数组中循环并更新每个bullet的y属性 但是,每次按空格键都会出现错误: 未捕获的TypeError:无法读取未定义的属性“y” 这稍微超出了我的理解,我不确定如何编写它,以便子弹数组中的子弹对象不是“未定义的” 如果有人有任何建议,我将非常感谢您的帮助 //called every fr

我有一个公共“子弹”数组,我正在将一个私有子弹对象推入其中。它有x和y属性,我想更改它的y属性,这样每次我按空格键时,它都会创建一个bullet对象,将其推送到bullets数组中,然后调用一个函数,在数组中循环并更新每个bullet的y属性

但是,每次按空格键都会出现错误:

未捕获的TypeError:无法读取未定义的属性“y”

这稍微超出了我的理解,我不确定如何编写它,以便子弹数组中的子弹对象不是“未定义的”

如果有人有任何建议,我将非常感谢您的帮助

   //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();
            }
        }
    }
//调用每个帧
函数playGame()
{
movePlayer();
playershot();
moveBullet();
}
//玩家射击功能
//如果空格键按下,则player.shoot为true,并创建子弹对象。
函数playerShoot()
{
如果(球员投篮)
{
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;
子弹。推(子弹);
player.shoot=false;
}
}
//移动子弹
函数moveBullet()
{
如果(项目符号长度!==0)
{
对于(变量i=0;i=0)
{
bullet.y--;
}
其他的
{
项目符号.拼接[i,0];
}
}
}
}
//渲染子弹
函数renderBullet()
{
如果(项目符号长度!==0)
{
对于(var i=0;i此处:

for(var i=0;i此处:


for(var i=0;i你应该使用项目符号。拼接[i,0];
->
项目符号。拼接(i,1);
@aduch-whoops,只是复制OP发布的内容没有意识到错误:)
项目符号。拼接[i,0];
->
项目符号。拼接(i,1);
@aduch-whoops,只是复制OP发布的内容没有意识到错误:)
for(var i = 0; i <= bullets.length; i++)
for(var i = 0; i < bullets.length; i++)
  if((bullet && bullet.y + bullet.height) >= 0) {
      bullet.y--;
  } else {
      bullets.splice(i, 0);
  }