Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Таймер только уменьшается. (https://javascript.ru/forum/misc/31075-tajjmer-tolko-umenshaetsya.html)

PashPP 26.08.2012 12:31

Таймер только уменьшается.
 
Собственно, есть код. (между прочим это анимация ПУЗИРЬКОВ)
Но setTimer работает только в меньшую сторону.Если увеличивать интервал, то ничего не происходит

<script type="text/javascript">

function addBar(id, bubbleNumber, barHeight, barWidth, barStatusHeight, bubbleBoom) {
  var koef= [];
  var koef2= [];
  var koef3= [];

  var barContainer = document.getElementById(id);
  barContainer.style.width = barWidth + 'px';
  barContainer.style.height = barHeight + 'px';

  var bubbleContainer = document.createElement('div');
  bubbleContainer.className = 'barStatus';
  bubbleContainer.style.width = barWidth+ "px";
  bubbleContainer.style.height = barHeight+ "px";
  barContainer.appendChild(bubbleContainer)

  for (var i=0; i<bubbleNumber; i++) {
    var bub = document.createElement('img');
    bub.className = 'bubbleImg';
    bub.src= 'animationres/bubble.png';
    bub.style.position ="absolute";
    //bub.style.height= Math.random()*10 + 5 +'px';
    bubbleContainer.appendChild(bub);
    koef[i] = Math.random();
    koef2[i] = Math.random();
    koef3[i] = Math.random();
  }
 
  //вот он этот сеттаймер 
  this.setTimer = function(interval) {
    timer = setInterval(animate, interval)
  }
  this.setTimer(100)
  
  
  var k = 0;
  var delta=0;
  var progres = [];
  var position= [];
  var bubble = document.getElementsByClassName('bubbleImg');
  for(var gg=0; gg<bubbleNumber; gg++) { position[gg] = Math.random()*barHeight};

    //отлавливаем наведение мышки на пузырек и лопаем его, если bubbleBoom передан !=0
  var bubbleBoom = bubbleBoom || 0;
  if (bubbleBoom) {
      bubbleContainer.onmouseover = function(event) {
      event = event || window.event;
      var target = event.target || event.srcElement;
  
      while(target != this) {
        if (target.className == 'bubbleImg') {
          target.style.display= 'none';
        }
        target = target.parentNode;
      }
    }
  }

  function animate() {
    for (var tt=0; tt<bubble.length; tt++){
      position[tt] = position[tt]+2;
      progres[tt] = position[tt]/barHeight;
      

      var deltaHor = Math.sin((Math.pow(progres[tt]*koef[tt], 4))*6*Math.PI);
      var deltaVer = Math.pow(progres[tt], 3);
      bubble[tt].style.height= koef2[tt]*7 + progres[tt]*8 +'px';
      bubble[tt].style.left =koef[tt]*(barWidth-5) + deltaHor*5 +'px';

      function ressetBuble() {
        bubble[tt].style.display = "";
        progres[tt] = 0; 
        position[tt] =0;
        koef[tt] = Math.random();
        koef2[tt] = Math.random();
        koef3[tt] = Math.random();
      };

      bubble[tt].style.bottom = koef3[tt]*(barStatusHeight/10) + deltaVer*barHeight*(1-koef[tt]/3) +'px';
      if (parseInt(bubble[tt].style.bottom, 10) >= barStatusHeight) { ressetBuble() };
    }
  }
}

var ff = new addBar('barContainer', 50, 200, 200, 200, 1)
ff.setTimer(50)
</script>

Deff 26.08.2012 12:39

PashPP,
1.Первое, при установке нового таймера, нужно удалять предыдущий таймер с id timer
Либо если у Вас несколько таймеров - делать id для таймеров массивом

PashPP 26.08.2012 13:03

Deff,
Хм. Спасибо.

Сделал вот так, вроде работает.

this.setTimer = function(interval) {
    if (this.timer!= undefined) {clearInterval(this.timer)};
    this.timer = setInterval(animate, interval);
  }
  this.setTimer(100);


Часовой пояс GMT +3, время: 19:34.