繁体   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