未捕获的TypeError:无法设置未定义的属性'vX'

时间:2013-12-14 20:40:06

标签: javascript jquery html

嗨,大家好我再次在学校的游戏代码中遇到了一个缺陷...所以我在这里尝试添加我的“玩家火箭”所以这是我刚刚在所有生成的小行星中添加的代码

    player.vX = 0;
    player.vY = 0;

    if (player.moveRight) {
        player.vX = 3;
    };

    if (player.moveUp) {
        player.vY = -3;
    };

    if (player.moveDown) {
        player.vY = 3;
    };

    player.x += player.vX;
    player.y += player.vY;

    context.fillStyle = 'rgb(255, 0, 0)';
    context.beginPath();
    context.moveTo(player.x+player.halfWidth, player.y);
    context.lineTo(player.x-player.halfWidth, player.y-player.halfHeight);
    context.lineTo(player.x-player.halfWidth, player.y+player.healfHeight);
    context.closePath();
    context.fill();

现在错误我不断得到它...

  

未捕获的TypeError:无法设置未定义的属性'vX'

我仔细阅读了这本书,看看我是否必须在某处定义,但我没有错过任何内容。现在我仍然是新手,但我看到我使用player.vX的唯一地点就在这里。

var player;
var Player = function(x, y){
    this.x = x;
    this.y = y;
    this.width = 24;
    this.height = 24;
    this.halfWidth = this.width/2;
    this.halfHeight = this.height/2;
    this.moveRight = false;
    this.moveUp = false;
    this.moveDown = false;

    this.vX = 0;
    this.vY = 0;
};

如果有人能帮助我,并且更好地理解这将是伟大的!谢谢!!!

1 个答案:

答案 0 :(得分:0)

当您说var player;时,您将player设置为未定义。您需要创建Player()的新实例。你可以通过

来做到这一点
var player=new Player(xCoord,yCoord);

如果它认为启动与构造函数具有相似名称的东西将实例化一个新的播放器,那么这本书是完全错误的。

要了解有关对象的更多信息,请查看MDN's tutorial