我正在建立一个游戏,对于我的玩家,我有一个玩家类。这个类定义了他们的名字,xpos,ypos等等。在我的主游戏循环中,我必须迭代所有当前玩家(它是多人游戏)并更新/绘制它们。
问题是,我不知道如何将玩家存储在游戏类中。我尝试在游戏课中这样做:
this.players = [];
然后:
game.players.push(new player(name));
但是我收到了这个错误:
Uncaught TypeError: object is not a function
我一直认为我可以将对象作为数组元素,但显然不是。
有人可以建议更好的方法来做我想做的事吗?
答案 0 :(得分:0)
您是否定义了播放器构造函数?
需要遵循以下格式的代码:
function player(name) {
this.name = name;
// Initialise other members here.
}
答案 1 :(得分:0)
假设你有这样的游戏和玩家类,
var Game = function() { this.players = []; }
var Player = function(name) { this.name = name; }
你可以做到
var game = new Game();
game.players.push(new Player("test"));
答案 2 :(得分:0)
this
的上下文可能会改变为您不期望的内容。
在课堂上,请务必检查this
的正确值。您可能需要使用闭包来确保您正在谈论您的课程。
像这样:
var MyClass = Class.extend({
myMethod: function() {
var self = this;
$('button').click(function({
//in here, this is different
//so use self instead
});
}
});
答案 3 :(得分:0)
想出来的人。我已经在我的代码中为另一个JS文件中的某个播放器定义了一个变量。对于有此问题的其他人,请检查您是否有类似
的内容var player = new player();
在你尝试这样做之前。