gpt4 book ai didi

javascript - 为什么这个对象的位置是NaN?

转载 作者:行者123 更新时间:2023-12-01 00:35:32 25 4
gpt4 key购买 nike

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

我试图console.log它,但它说位置是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 == "move" && msg.who != cuid) {
var thepoint = new Point(msg.pos.x,msg.pos.y)
console.log(thepoint)
console.log(players[msg.who].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?

最佳答案

(我将其作为答案而不是评论,因为那里没有足够的空间)

为了找到问题出在哪里,请尝试模拟来自后端的消息,以检查您的客户端逻辑是否正确。

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

// 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
}
});

关于javascript - 为什么这个对象的位置是NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58155492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com