Что не так с тем, как я объявляю эту переменную Javascript? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть объект с именем TruckModel, который был определен ранее в моем файле JavaScript с именем milktruck.js

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

Я знаю, что мой текущий код не работает, потому что модель не будет отображаться, когда я использую функцию teleportToThat ниже.

Мне удалось отобразить модель, объявив только один объект TruckModel () в моем файле index.html, а затем с помощью teleportToThat

Вот мой код для этого, вы видите какие-либо ошибки в том, какЯ делаю это?

Не работающая версия:

 var opponentTrucks = [];

 for (var i = 0; i < markers.length; i++) {

      opponentTrucks[i] = new TruckModel();
      opponentTrucks[i].teleportToThat( lat, lng, heading );

 }

Рабочая версия: (Разница в том, что я пытаюсь получить различное количество объектов TruckModel)

Объявлено в файле index.html:

 var model;

Объявлено в файле JavaScript:

 model.teleportToThat( lat, lng, heading );

Вот весь файл JavaScript:

http://thehobbit2movie.com/milktruck.js

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Если вы используете только цифровые клавиши, вам нужен массив, а не объект:

var opponentTrucks = [];

for (var i = 0; i < markers.length; i++) {
     opponentTrucks.push(new TruckModel());
}

Это, вероятно, не остановит ваш код на самом деле, но это почти наверняка будет улучшением.

Если все еще есть ошибки, возможно, вы могли бы сказать, что это: -)

2 голосов
/ 31 мая 2011

Если вы хотите найти объекты по числовому индексу, вам нужен массив , а не простой объект:

var opponentTrucks = [];

То, что у вас есть, будет работать, в некотором роде, но нет никаких причин не использовать реальный массив, если вы все равно будете обращаться с ним как с одним.

edit & mdash; до сих пор не совсем понятно, в чем проблема. Эта строка здесь:

opponentTrucks[i].teleportToThat( lat, lng, heading );

Что это должно делать? Откуда это называется? Каково значение «я»? Если у вас просто есть этот оператор после цикла, то он не будет работать. Если вы хотите, чтобы эта функция "teleportToThat ()" вызывалась для каждая в массиве , то вы должны поместить вызов функции внутри в цикл "for".

...