我有一个函数,调用它的代码是
// *************** Send Players their cards ***************
function sendplayerThierCards(myplayerNum, myN_Cards){
console.log("sending player: "+ myplayerNum + " their cards: " + myN_Cards);
socket.emit('playersCards', {
playerNum: myplayerNum,
myCards: myN_Cards,
room: code
});
}
调用该函数的代码:
let myHand = new Array();
for(let i=0; i<5; i++)
myHand[i] = player1Hand[i]
sendplayerThierCards(1,myHand);
如果我发送一个字符串到myN_Cards中, emit就会被调用.如果我发送一个数组到myN_Cards中, 我得到一个错误: "最大调用堆栈大小超过Javascript"
服务器在这里。https:/github.comtsehnoutkaGameServer。
游戏代码在这里。https: /github.comtsehnoutkacallStackSizeExceeded。
这对我来说是没有意义的,因为我能够在我的代码的另一部分发送一个数组.另一个Array:
var playerInfo = [{
name: "Red",
color: "red",
background: "Coral"
},
{
name: "Blue",
color: "blue",
background: "LightSkyBlue"
},
{
name: "Green",
color: "green",
background: "Lime"
},
{
name: "Yellow",
color: "yellow",
background: "#fcfce8"
},
];
和它的功能。
// *************** Send All Players ***************
function sendAllPlayersJoined(){
console.log("sending all players info");
socket.emit('allPlayersNames', {
players: playerInfo
});
}
我改变了我发送的数据量,似乎可以工作了,而不是整张牌,我只是发送了等级和套装。
for ( i = 0; i < 5; i++)
myHand[i] = {suit: player1Hand[i].suit, rank: player1Hand[i].rank};
sendplayerThierCards(1, myHand);
谢谢大家