Показать сообщение отдельно
  #15 (permalink)  
Старый 21.03.2018, 14:00
Аспирант
Отправить личное сообщение для Самовар Посмотреть профиль Найти все сообщения от Самовар
 
Регистрация: 28.03.2017
Сообщений: 31

большая просьба. Помогите мой цикл while переделать в рекурснивный setTimeout. Единственное, чего смог добиться, это бесконечно работающая рекурсия (то есть бесконечный самовызов себя), потому что в результате моей работы в this вместо Т34 попадает Windows, в результате чего все операции с this возвращают NaN. И прочность моего тигренка всегда NaN (что логично, потому что атака Windows тоже NaN)

Tank.prototype.attack = function(target) {
  if (target == Tiger) {
    setTimeout(function() {
      target.hp = target.hp - this.damage;
      tooltipElemTiger.innerHTML = target.hp;
      alert(this.name + " атаковал " + target.name);
      alert("Очков прочности " + target.name + target.hp + " единиц");
      if (target.hp <= 0) this.destroyed(target);
    }, 5000);
  }
};

function battle() {
  setTimeout(T34.attack(Tiger), 1000);
}

Последний раз редактировалось Самовар, 21.03.2018 в 14:04.
Ответить с цитированием