socket.io emit返回相同的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket.io emit返回相同的值相关的知识,希望对你有一定的参考价值。
这里的快速问题有人可以告诉我为什么每次我从客户attack
发出enemyHealth
和userHealth
总是在每次发射时保持在94并且在每次攻击发射时它不会减少6?它只会在第一次点击时减少。
socket.on('attack', () => {
var userDamage = 6;
var enemyDamage = 6;
var userHealth = 100;
var enemyHealth = 100;
var userDmg = userDamage;
var enemyDmg = enemyDamage;
userHealth -= enemyDmg;
enemyHealth -= userDmg;
console.log(enemyHealth);
});
答案
enemyHealth
和userHealth
在每个attack
事件中保持相同的原因是这些变量在attack
事件本身中被声明,每次attack
事件发生时它们的值都将保持不变。
解决问题的一种方法是简单地在enemyHealth
事件处理程序之外移动userHealth
和attack
的声明和初始化,如下所示:
// Declare these variables outside of the attach handler so that their updated
// values are retained between attack events
var userHealth = 100;
var enemyHealth = 100;
socket.on('attack', () => {
var userDamage = 6;
var enemyDamage = 6;
// Remove the variable declarations from inside the attack event
// var userHealth = 100;
// var enemyHealth = 100;
var userDmg = userDamage;
var enemyDmg = enemyDamage;
userHealth -= enemyDmg;
enemyHealth -= userDmg;
// Now this value goes down each time the attach event occours
console.log(enemyHealth);
});
以上是关于socket.io emit返回相同的值的主要内容,如果未能解决你的问题,请参考以下文章
socket.io - socket.emit、socket.on、socket.send
Android socket.IO中的Emit或Ack超时处理?