socket.io emit возвращает то же значение - PullRequest
0 голосов
/ 14 октября 2018

Быстрый вопрос, может ли кто-нибудь сказать мне, почему каждый раз, когда я излучаю с клиента 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);

});

1 Ответ

0 голосов
/ 14 октября 2018

Причина, по которой 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);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...