Javascript 为什么这个对象是';你的位置是什么?

Javascript 为什么这个对象是';你的位置是什么?,javascript,paperjs,Javascript,Paperjs,现在,我有一个websocket服务器,它使用一个对象({pos:{x:32,y:46})向客户端发送其他玩家的位置。然后,我通过执行var newposition=newpoint(msg.pos.x,msg.pos.y)将其放入一个点,但我从未看到播放器出现 我试着去安慰他,但他说这个位置是NaN。然后我试着用console.log记录这一点,结果成功了。我甚至尝试了根本不设置位置,但它随机将其位置设置为NaN,我看不到任何原因 这是我让玩家加入的代码: function addPlayer

现在,我有一个websocket服务器,它使用一个对象(
{pos:{x:32,y:46}
)向客户端发送其他玩家的位置。然后,我通过执行
var newposition=newpoint(msg.pos.x,msg.pos.y)
将其放入一个点,但我从未看到播放器出现

我试着去安慰他,但他说这个位置是NaN。然后我试着用console.log记录这一点,结果成功了。我甚至尝试了根本不设置位置,但它随机将其位置设置为NaN,我看不到任何原因

这是我让玩家加入的代码:

function addPlayer(nickname,position,color,uid,size,face) {
    var circle = new Path.Circle(position,size)
    var face = new Raster("/faces/"+face+"/face.png")
    face.rescale(40,40)
    face.position = position
    var masker = new Group({
        children: [circle, face],
        clipped: true
    });
    face.onLoad = function() {
        // Fit the circle snugly around the image:
        circle.fitBounds(face.bounds);
    };

    circle.fillColor = color
    console.log(nickname + " has joined the server")
    console.log(players)
    players[uid] = {
        circle: circle,
        nickname: nickname,
        entirething: masker,
        face: face
    }
    console.log(circle.position)
}
以下是玩家移动时发生的情况(没有实际设置玩家的位置)。

最后,当玩家加入时:

if(msg.event == "join" && msg.who != cuid) {
    addPlayer(msg.username,{x:0,y:0},"dodgerblue",msg.who,20,msg.face)
}
在我的后端,我只是广播有人加入了他们的id(
who
)和脸(
face

控制台中没有错误,我很困惑为什么会发生这种情况。。。为什么它自己设置为NaN?

(我把它作为一个答案而不是一个评论,因为我没有足够的空间)

为了找到问题的根源,请尝试模拟来自后端的消息,以检查客户端逻辑是否正确

以下是根据您的代码示例改编的示例,可作为此任务的起点。
我修改了一些对我来说没有意义的东西,但我认为你应该能够根据你的具体情况进行调整

// Init global variables.
var cuid = 999;
var players = {};

function addPlayer(nickname, position, color, uid, size, face) {
    // Init image and circle.
    var circle = new Path.Circle(position, size);
    var image = new Raster(face);
    image.onLoad = function() {
        // Make image fit circle bounds.
        image.fitBounds(circle.bounds);
    };
    // Use circle as image clip mask.
    var masker = new Group({
        children: [circle, image],
        clipped: true
    });

    console.log(nickname + ' has joined the server');

    // Store player.
    players[uid] = {
        circle: circle,
        nickname: nickname,
        entirething: masker,
        face: image
    };
}

// On message...
function onMessage(msg) {
    // If message concerns current player...
    if (msg.who === cuid) {
        // ...don't do nothing.
        return;
    }
    // If message is a move event...
    else if (msg.event == 'move' && msg.who != cuid) {
        // ...update player position.
        players[msg.who].entirething.position = new Point(msg.pos.x, msg.pos.y);
    // If message is a join event...
    } else if (msg.event == 'join' && msg.who != cuid) {
        // ...add a new player.
        addPlayer(msg.username, { x: 0, y: 0 }, 'dodgerblue', msg.who, 20, msg.face);
    }
}

//
// Simulate messages reception.
//

// Add player 1
onMessage({
    event: 'join',
    who: 1,
    username: 'player 1',
    face: 'http://assets.paperjs.org/images/marilyn.jpg'
});

// Move player 1
onMessage({
    event: 'move',
    who: 1,
    pos: {
        x: 50,
        y: 50
    }
});

// Add player 2
onMessage({
    event: 'join',
    who: 2,
    username: 'player 2',
    face: 'http://assets.paperjs.org/images/marilyn.jpg'
});

// Move player 2
onMessage({
    event: 'move',
    who: 2,
    pos: {
        x: 500,
        y: 125
    }
});

(我把它作为一个答案,而不是一个评论,因为我没有足够的空间)

为了找到问题的根源,请尝试模拟来自后端的消息,以检查客户端逻辑是否正确

以下是根据您的代码示例改编的示例,可作为此任务的起点。
我修改了一些对我来说没有意义的东西,但我认为你应该能够根据你的具体情况进行调整

// Init global variables.
var cuid = 999;
var players = {};

function addPlayer(nickname, position, color, uid, size, face) {
    // Init image and circle.
    var circle = new Path.Circle(position, size);
    var image = new Raster(face);
    image.onLoad = function() {
        // Make image fit circle bounds.
        image.fitBounds(circle.bounds);
    };
    // Use circle as image clip mask.
    var masker = new Group({
        children: [circle, image],
        clipped: true
    });

    console.log(nickname + ' has joined the server');

    // Store player.
    players[uid] = {
        circle: circle,
        nickname: nickname,
        entirething: masker,
        face: image
    };
}

// On message...
function onMessage(msg) {
    // If message concerns current player...
    if (msg.who === cuid) {
        // ...don't do nothing.
        return;
    }
    // If message is a move event...
    else if (msg.event == 'move' && msg.who != cuid) {
        // ...update player position.
        players[msg.who].entirething.position = new Point(msg.pos.x, msg.pos.y);
    // If message is a join event...
    } else if (msg.event == 'join' && msg.who != cuid) {
        // ...add a new player.
        addPlayer(msg.username, { x: 0, y: 0 }, 'dodgerblue', msg.who, 20, msg.face);
    }
}

//
// Simulate messages reception.
//

// Add player 1
onMessage({
    event: 'join',
    who: 1,
    username: 'player 1',
    face: 'http://assets.paperjs.org/images/marilyn.jpg'
});

// Move player 1
onMessage({
    event: 'move',
    who: 1,
    pos: {
        x: 50,
        y: 50
    }
});

// Add player 2
onMessage({
    event: 'join',
    who: 2,
    username: 'player 2',
    face: 'http://assets.paperjs.org/images/marilyn.jpg'
});

// Move player 2
onMessage({
    event: 'move',
    who: 2,
    pos: {
        x: 500,
        y: 125
    }
});


msg.data.pos.x
?尝试过。。。没有/键入debugger并检查消息对象-无法复制
msg.data.pos.x
?已尝试。。。没有/键入调试器并检查消息对象-无法复制