2011-11-13 15 views
0

私はゲームを構築しています。プレーヤーのために私はプレーヤークラスを持っています。このクラスは、名前、xpos、yposなどのようなものを定義します。私のメインゲームのループでは、現在のプレイヤー(マルチプレイヤー)をすべて反復して更新/描画する必要があります。オブジェクトを配列にプッシュできませんJavascript

問題は、プレイヤーをゲームクラスに保存する方法がわかりません。 、私はいつも、私は配列の要素としてオブジェクトを持っていると考えていた

Uncaught TypeError: object is not a function 

this.players = []; 

そして:私はゲームクラスでこれをやってみました

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

しかし、私はこのエラーを取得しますしかし明らかにそうではありません。

誰かが私が欲しいことをする良い方法をアドバイスできますか?

+0

はいできます。エラーの原因は他にもあります。エラーの詳細を表示するには、良いブラウザ(Firefox、Chromeなど)でコードを実行してください。 –

+0

'player'は関数ですか? FWIWは、通常、大文字の「Player」で始まるような機能を持っています。 –

+0

@Daveコンストラクタ関数、つまり... –

答えて

0

プレーヤコンストラクタ関数を定義しましたか?

この形式を次のどこかのコードがあるように必要があります。

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

     // Initialise other members here. 
    } 
0

はあなたが

var game = new Game(); 
game.players.push(new Player("test")); 
+0

これはまさに私がやっていることです。文字のように、文字のように。それはコードに影響を及ぼす別のものでなければならず、Chromeは私に間違ったラインを与えている。明日は厳しい姿勢をとるだろう。 –

+0

@MartinHoeこの場合、 'game.players.push(新しいプレーヤー(name));'プレーヤーは大文字のP – pradeek

0
を行うことができます

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

、あなたがこのようなゲームとプレイヤーのクラスを持っていると言います

thisのコンテキストはおそらくあなたが期待していないものに変わります。

クラスでは、正しい値がthisであることを確認してください。クラスについて話していることを確認するには、おそらくクロージャーを使用する必要があります。このよう

var MyClass = Class.extend({ 
    myMethod: function() { 
    var self = this; 
    $('button').click(function({ 
     //in here, this is different 
     //so use self instead 
    }); 
    } 
}); 
0

はみんなそれを考え出しました。私はすでに別のJSファイルの自分のコードで、以前にプレイヤーに定義された変数を持っていました。この問題が発生した他の人には、これを試してやる前に、

var player = new player(); 

のようなものがないことを確認してください。

関連する問題