2015-06-05 7 views
0

У личного приветствия есть сервер, и он дает простую ошибку, но не знает, как решить и что объекты, по-видимому, нормальные, см. Ниже.Ошибка сервера node.js

var io = require('socket.io').listen(8000); 

    var players = {}, count = 0; 

io.sockets.on('connection', 
    function (socket) 
    { 
     var id = count++; //assign number 
     var player = players[id] = new Player(id, 10, 1); //create new  player 
    player.socket = socket; 


    socket.on('chat', 
     function (data) 
     { 
      var message = player.name + ': ' + data.message; 
      socket.emit('chat', { message: message}); 
      socket.broadcast.emit('chat', { message: message}); 
     }); 

    socket.on('position', 
     function (data) 
     { 
      player.x = data.playerX; 
      player.y = data.playerY; 
      player.z = data.z; 


      socket.emit('position', {pid : player.id, playerX : player.x, playerY : player.y, z : player.z}); 
      socket.broadcast.emit('position', {pid : player.id, playerX : player.x, playerY : player.y, z : player.z}); 
     }); 

    socket.on('register', 
     function (name) 
     { 
      player.name = name; 
      player.registered = true; 
      socket.emit('chat', { message : "Server: bem vindo ao server " + player.name + '!'}); 
      socket.broadcast.emit('chat', { message : "Server: bem vindo ao server " + player.name + '!'}); 

      for(var p in players) 
      { 
       //send initial update 
       if(!players[p].disconnected) 
       { 
        socket.emit('addPlayer', {pid: players[p].id, x: players[p].x, y: players[p].y, name: players[p].name, sessionid: socket.id}); 
        if(players[p].id != player.id) 
         players[p].socket.emit('addPlayer', {pid: player.id, x: player.x, y: player.y, name: player.name}) 
       } 
      } 

     }); 

    socket.on('disconnect', 
     function (socket) 
     { 
      player.disconnected = true; 
      delete players[player.id]; 
      player = null; 
     }); 

}); 



function Player(id, x, y, z) { 
    this.id = id; 
    this.x = x; 
    this.y = y; 
    this.z = z; 
    this.name = ""; 
    this.disconnected = false; 
    this.registered = false; 
    this.socket = null; 
} 

Alloy обычный сервер, но когда он будет получать данные сообщения

this.z = z; 

«this.z = г не определен»

+1

новый игрок (id, 10) вы передаете только два параметра, так что y и z не будут определены –

+1

Кроме того, параметр 'Player' - это капитал Z и' this.z' ищет строчные буквы z. – Andy

+0

Правильно спасибо, я не видел, чтобы z был заглавным. теперь это сработало. –

ответ

-1

это может быть связано с тем, что ваш Объект игрока должен вернуть this в конце его.

+0

Мне нужно оставить его: var player = players [id] = new Player (id, 10, 1); –

+0

да, но бит внизу, который говорит '' 'function Player''', не возвращает ничего, чтобы создать объект, - то, что я пытаюсь сказать –

+0

Спасибо, работал –

Смежные вопросы