在socket.on中获取其值的全局变量的值在其外部不可访问

时间:2017-03-25 17:26:27

标签: javascript sockets

var snake;

p.setup = function () {
  canvas = p.createCanvas(600, 600)
  socket = io.connect('http://localhost:1337')

socket.on('activate-device-controls', function(_isPhone){
    if(_isPhone) {
      isPhone = _isPhone;
      snake = new Snake(null, null, p, snakeImg)
      food = new Food(p)

      const snakeData = {
        x: snake.x,
        y: snake.y,
        color: snake.color,
        points: snake.points,
        tail: snake.tail
      }

      const foodData = {
        x: food.vec.x,
        y: food.vec.y
      }
      // Handle server disconnection
      socket.on('disconnect', function () {
        socket.close()
      })

      // send the snake info to the server
      socket.emit('start', {snakeData, foodData})

      socket.on('serverUpdate', function (data) {
        snakes = data.snakes
        foods = data.foods
      })

        p.frameRate(10)
     }
  })
};

我们无法弄清楚为什么snake在socket.on(..)中的回调函数之外仍未定义。但是,我可以看到蛇被重新分配了新的Snake(),它在其他任何地方都不存在。我们无法弄清楚原因。请帮忙

0 个答案:

没有答案