ユーザーがキャンバスに配置されたオブジェクトを収集する必要があるマルチプレイヤー ゲームを作成しています。これらのオブジェクトを各ユーザーの同じ位置に配置する必要があります。socket.io サーバーを使用して座標を作成し、クライアント側を使用してスプライトを描画しています。
クライアント:
var ShoppingList = function(noItems){
var self = this;
self.list = [];
for(var i = 0; i < noItems; i++){
socket.emit('getPosition', {id: i, gameWidth: Game.width});
socket.on('setPosition', function(data){
self.list.push(new ShoppingListItem(data.id, data.x, data.y));;
//this.list.push(new ShoppingListItem(i));
});
サーバ:
socket.on('getPosition', function(data) {
socket.emit('setPosition', {
x: 32 + (Math.random() * (data.gameWidth - 64)),
y: 32 + (Math.random() * (data.gameWidth - 64)),
id: data.id
});
});
ただし、socket.on 関数内から最初のコード ブロックの ShoppingList にアクセスすると、null エラーがスローされます。関数の外でその配列に追加する方法はありますか?