Самозаполняющийся statusbar
Помогите реализовать статус бар (самозаполняющийся)
function changeLine(curL,maxL,speedL,what) { var curWidth = maxL/curL * 100; what.style.width = curWidth + '%'; //а здесь цикл пока curL <= maxL //увиличиваем curL на speedL и меняем width // timeOut 1 сек } какую \ какие функции нужно присобачить чтобы раз в 1 секунду ширина дива обновлялась.. Заранее спасибо |
setTimeout / setInterval
|
это я знаю. я не могу разобраться как с ними работать.
как им передавать параметр. этоже не задержка, а что-то другое, оно иначе работает. Если я просто цикл пропишу, то оно не будет работать как мне надо =\ |
это не статус бар, а прогресс бар. И что, он у тебя прогресс не отображает? Процесс сам по себе, прогресс бар сам по себе?
|
он либо ничего не делает (ошибка в коде?)
либо только 1 шаг из цикла, максимум делал сразу все, но висел, пока время выполнения цикла не кончится) |
(function() {
// тело цикла что здесь пишем то будет повторяцца // условие if(count == 100) // return false; оборвет цикл setTimeout(arguments.callee, 300) // эта хрень самая главная сама делает цикл })(); |
я имею, в виду, что непонятно, как этот прогресс бар работать должен. Он же показывает текущее состояние? Если да, то текущее состояние чего?
|
это полоска жизни в игре.
ей передаются 3 параметра (curHp,maxHp,speedHp) startProcent = curHp/ maxHp * 100; - какой базовое состояние прогресс бара Procent = speedHp/maxHp * 100; - сколько процентов идет в единицу времени mathround() везде на всяк хотелось бы довести дело до победного конца. Как организовать многозадачность? Ну чтобы при двойном вызове функции оно делала сразу 2 дела (управлялала двумя прогресс барами) |
тебе не нужна многозадачность
<div id="test"></div> <script type="text/javascript"> f(); function f(){ runPeriodically( function(){ document.getElementById('test').innerHTML += '.'; }, 100, 10); } function runPeriodically( f, interval, times ){ var i = 0; var id = setInterval(function(){ if( times && i == times-1 ) clearInterval( id ); f( i ); i++; }, interval); } </script> |
f() вызывает функцию.
функция f() вызывает функцию runperiodically а та в свою очередь выполняет то что ей передали параметром f. хм. я решил дело так, еще вчера. <script> //what = id дива у дива обрамки должно быть ид what_full а у дива вкладыша what //curHp - текущее значение //maxHp - максимальное значение //speedHp - это сколько добавляется в единицу времени function hey(what,curHp,maxHp,speedHp) { obj = document.getElementById(what); objf = document.getElementById(what+'_full'); var curPro = curHp / maxHp * 100; var Pro = speedHp / maxHp * 100; var count=Math.round(curPro); (function() { count = count + Math.round(Pro); obj.style.width = count + '%'; if(count >= 100) { obj.style.width = '100%'; curHp = maxHp; objf.title = maxHp + '/' + maxHp; return false; } else { curHp = curHp + speedHp; objf.title = curHp + '/' + maxHp; obj.style.width = count + '%'; } setTimeout(arguments.callee, 5000) })(); } </script> <body onLoad="hey('myhp2',11,37,3);"> <div id="myhp2_full" style="margin-top:200px;width:500px;height:4px;border:2px solid black;"> <div id="myhp2" style="width:50%;height:4px;background:green;"></div> </div> </body> проблемы, кроме как онлоад я не могу вызвать функцию. но это не так уж и страшно. в моем варианте нельзя сделать сразу несколько таких штук. будет работать последняя. пс. как ты сделал возможность запустить твой код прямо здесь |
Часовой пояс GMT +3, время: 15:14. |