Не могу вставить объект в массив Javascript - PullRequest
0 голосов
/ 13 ноября 2011

Я создаю игру, и для моих игроков у меня есть класс игрока. Этот класс определяет такие вещи, как их имя, xpos, ypos и т. Д. В моем основном игровом цикле мне приходится перебирать всех текущих игроков (это мультиплеер) и обновлять / рисовать их.

Проблема в том, что я не знаю, как хранить игроков в игровом классе. Я пытался сделать это в игровом классе:

this.players = [];

А потом:

game.players.push(new player(name));

Но я получаю эту ошибку:

Uncaught TypeError: object is not a function

Я всегда думал, что могу иметь объекты в качестве элементов массива, но, очевидно, нет.

Может кто-нибудь посоветовать лучший способ сделать то, что я хочу?

Ответы [ 4 ]

0 голосов
/ 14 ноября 2011

Разобрался, ребята. У меня уже была переменная, определенная для player ранее в моем коде в другом файле JS. Если у вас есть другие проблемы, убедитесь, что у вас нет ничего похожего на

var player = new player();

прежде чем пытаться это сделать.

0 голосов
/ 13 ноября 2011

Скажем, у вас есть класс Game and Player, подобный этому,

var Game = function() { this.players = []; }
var Player = function(name) { this.name = name; }

Вы можете сделать

var game = new Game();
game.players.push(new Player("test"));
0 голосов
/ 13 ноября 2011

Контекст this, вероятно, меняется на то, чего вы не ожидаете.

В вашем классе обязательно проверьте правильное значение this. Возможно, вам нужно использовать замыкания, чтобы убедиться, что вы говорите о своем классе.

Как это:

var MyClass = Class.extend({
  myMethod: function() {
    var self = this;
    $('button').click(function({
      //in here, this is different
      //so use self instead
    });
  }
});
0 голосов
/ 13 ноября 2011

Вы определили функцию конструктора плеера?

Где-то должен быть код, следующий за этим форматом:

    function player(name) {
        this.name = name;

        // Initialise other members here.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...