Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2012, 12:31
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

Таймер только уменьшается.
Собственно, есть код. (между прочим это анимация ПУЗИРЬКОВ)
Но 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>
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2012, 12:39
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 26.08.2012 в 12:45.
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2012, 13:03
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

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

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

this.setTimer = function(interval) {
    if (this.timer!= undefined) {clearInterval(this.timer)};
    this.timer = setInterval(animate, interval);
  }
  this.setTimer(100);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать только части страницы Sereban jQuery 11 21.05.2013 17:20
json получает только первую строчку из mysql почему ? Sadist_dead AJAX и COMET 14 11.08.2011 05:20
Выбор только 1 значения chexbox Amateur Internet Explorer 9 21.06.2011 13:19
combobox появляется только после физического открытия в браузере Petja ExtJS 6 21.03.2011 16:50
JS'ом поменять textDecoration только для случаев link и visited lancer Элементы интерфейса 3 05.04.2008 20:51