簡體   English   中英

socket.io發出返回相同的值

[英]socket.io emit returns the same value

這里有一個enemyHealth問題,有人可以告訴我,為什么我每次從客戶端attack發射時, enemyHealthuserHealth每次發射始終保持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事件上的enemyHealthuserHealth保持相同的原因是,這些變量是在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM