【问题标题】:What's wrong with how I'm declaring this Javascript variable?我声明这个 Javascript 变量的方式有什么问题?
【发布时间】:2011-05-31 18:36:58
【问题描述】:

我有一个名为 TruckModel 的对象,该对象之前在我的 JavaScript 文件 Milktruck.js 中定义

我正在尝试创建这些 TruckModel 对象的数组,因为我不知道在任何时候我的多人游戏玩家进入和退出时需要多少 TruckModel 对象。

我知道我当前的代码不起作用,因为当我使用下面的 teleportToThat 函数时模型不会显示。

我能够通过在我的 index.html 文件中仅声明一个 TruckModel() 对象然后使用 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

【问题讨论】:

  • 请说明您如何以及为什么知道这是错误的。
  • 已添加,现在应该更具描述性。

标签: javascript arrays variables object declaration


【解决方案1】:

如果您希望能够通过数字索引找到对象,您需要一个数组,而不是普通对象:

var opponentTrucks = [];

你所拥有的东西会起作用,有点,但如果你想把它当作一个真正的数组来对待,没有理由不使用它。

edit — 目前还不清楚到底是什么问题。这一行在这里:

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

那应该怎么做?它是从哪里调用的? “我”的价值是什么?如果你只是在循环之后有那个语句,那么它就行不通了。如果你想让“teleportToThat()”函数为数组中的每一个调用,那么你应该把函数调用放在“for”循环中。 p>

【讨论】:

  • 这仍然没有解决。我没有要给出的错误消息,但我知道它不起作用,因为模型永远不会出现。
  • 如果您最初说代码不起作用,那将会很有帮助。但是,您发布的代码(无论是否有我的更改)都可能不是问题。
  • 好的,我现在添加了更多描述。
  • 对不起,是的,它应该在 for 循环中,我刚刚在这个网站上输入代码时搞砸了。 teleportToThat 函数采用 TruckModel 对象并在新的 lat、lng、航向坐标处传送/显示模型。
  • 好的,就在那段代码中,我认为没有任何问题。什么是行不通的?换句话说,是什么让您认为存在问题,为什么您认为这段代码有问题?
【解决方案2】:

如果你只使用数字键,你需要一个数组,而不是一个对象:

var opponentTrucks = [];

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

这可能不会阻止您的代码实际工作,但它几乎肯定会有所改进。

如果仍然有错误,也许你可以说它们是什么:-)

【讨论】:

  • 这仍然没有解决。我没有要给出的错误消息,但我知道它不起作用,因为模型永远不会出现。
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
相关资源
最近更新 更多