Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2009, 12:44
Nicko
 
Сообщений: n/a

Блокировка передачи управления в setInterval()
Пишу скриптик, толкнулся с проблемой..

Необходимо после вызова функции setInterval() передать управление не сразу, а только по окончании ее выполнения (после вызова clearInerval())..

Подскажите: каким образом можно заблокировать передачу управления??

Вот кусок исходного кода:

Hen = function(game,i) {
  this.name = "Hen #"+i;
  this.i = i;
  this.game = game;
  this.div = null;

  this.timer = -1;
  this.coef = 0;
  this.from = 0;
  this.counter = 0;
}
Hen.prototype = {
  remove: function() {
    var self = this;

    self.animateRemoving();
    self.game.board.removeChild(self.div)
  },
  animateRemoving: function() {
    var self = this;

    self.counter = 0;
    self.coef = 0;
    if (self.timer == -1) {
      self.from = 0;
      self.to = 100;
      self.timer = window.setInterval(function() {self.animate(1)},delay);
    }
  },
  animate: function(k) {
    var self = this;

    self.coef += 0.1;
    self.counter += Math.round(self.coef);
    if (self.counter > 100) {
      self.counter = 100;
      window.clearInterval(self.timer);
      self.timer = -1;
    }
    $style(self.div, {opacity: (self.from + k*self.counter)/100});
  }
}

Последний раз редактировалось Андрей Параничев, 14.03.2009 в 15:07. Причина: Пользуйтесь bb-тегами [js] и [html] для оформления листингов кода в теле сообщения
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2009, 12:53
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

что-то я нифига не понял что вы хотите.
но, в вашем коде есть ошибка(как минимум одна)
переменная delay нигде не определена, но используется.
именна эта переменная ответственнена за время задержки выполнения
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2009, 15:09
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Вы хотите сделать "синхронный" интервал?
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2009, 21:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Передавайте функции callback, который вызывайте после уничтожения интервала.
Ответить с цитированием
  #5 (permalink)  
Старый 15.03.2009, 10:49
Интересующийся
Отправить личное сообщение для Nicko Посмотреть профиль Найти все сообщения от Nicko
 
Регистрация: 15.03.2009
Сообщений: 12

TO: Gvozd
Сообщение от Gvozd Посмотреть сообщение
что-то я нифига не понял что вы хотите.
но, в вашем коде есть ошибка(как минимум одна)
переменная delay нигде не определена, но используется.
именна эта переменная ответственнена за время задержки выполнения
Я выложил только КУСОК кода, все необходимые переменные и функции определены.

Цель - реализация некого абстрактного метода blockWorking(), который заблокировал бы выполнение скрипта на время выполнения setInterval() и передать управление далее только после вызова clearInterval()

Если не затруднит, можете глянуть исходник: hens_vs_foxes_v01/js/hens.js line 43. Заранее благодарен
Вложения:
Тип файла: zip hens_vs_foxes_v01.zip (16.2 Кб, 2 просмотров)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38