Блокировка передачи управления в 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}); } } |
что-то я нифига не понял что вы хотите.
но, в вашем коде есть ошибка(как минимум одна) переменная delay нигде не определена, но используется. именна эта переменная ответственнена за время задержки выполнения |
Вы хотите сделать "синхронный" интервал?
|
Передавайте функции callback, который вызывайте после уничтожения интервала.
|
TO: Gvozd
Вложений: 1
Цитата:
Цель - реализация некого абстрактного метода blockWorking(), который заблокировал бы выполнение скрипта на время выполнения setInterval() и передать управление далее только после вызова clearInterval() Если не затруднит, можете глянуть исходник: hens_vs_foxes_v01/js/hens.js line 43. Заранее благодарен :thanks: |
Часовой пояс GMT +3, время: 16:44. |