虽然它有一些需要解决的错误,但我已经创建了每秒一次的工作损坏。
任何想法或想法?我已经尝试过使用do while循环,但我根本无法使用该代码。我只使用setInterval函数获得了成功。
我的网站上有一个工作脚本,我也会在这里发布代码。
$(document).ready(function(){
var dmg = 60;
var curr_hp = 1200;
var tot_hp = 1200;
$('#attk_spd').html('1.2 seconds');
$('#dmg').html('60'); $('#curr_hp').html('1200');
$('#tot_hp').html('1200');
$("#btn").click(function(){
$('#attk').html('You are currently attacking your target.');
setInterval(
function () {
if (curr_hp > 0) {
curr_hp = curr_hp - dmg;
$('#curr_hp').html(curr_hp);
} else { $('#attk').html('Your target has been destroyed.');
}
},
1200);
})
});
这是当前正在运行的工作版本: http://www.evenstar-online.com/Jquery_snippets/dpsloop.php
答案 0 :(得分:1)
使用setTimeout
代替setInterval
,这样您就可以精确控制是否再次攻击。然后你可以只调用一次该函数,并立即发生第一次攻击。解释这有点奇怪;请遵循以下代码:)
此外:
$.html
!养成使用$.text
的习惯,否则你最终会试图在某个地方插入一个尖括号,并且不知道为什么所有文本都会消失。我最终得到了:
$(document).ready(function(){
var dmg = 60;
var curr_hp = 1200;
var tot_hp = 1200;
$('#attk_spd').text('1.2 seconds');
$('#dmg').text('60');
$('#curr_hp').text('1200');
$('#tot_hp').text('1200');
var attack_timer;
$("#btn").click(function() {
if (attack_timer) {
// We're already waiting for the next attack, so do nothing
return;
}
$('#attk').text('You are currently attacking your target.');
var attack_once = function() {
// Always attack immediately
curr_hp -= dmg;
$('#curr_hp').text(curr_hp);
// Only schedule another attack if the target is still alive
if (curr_hp > 0) {
attack_timer = setTimeout(attack_once, 1200);
}
else {
$('#attk').text('Your target has been destroyed.');
}
};
attack_once();
})
});