[英]socket.io emit returns the same value
這里有一個enemyHealth
問題,有人可以告訴我,為什么我每次從客戶端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);
});
每個attack
事件上的enemyHealth
和userHealth
保持相同的原因是,這些變量是在attack
事件本身中聲明的,因此,每次attack
事件發生時,它們的值將始終相同。
解決您的問題的一種方法是,只需簡單地將enemyHealth
和用戶userHealth
的聲明和初始化enemyHealth
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);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.