Блокировка передачи управления в 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, время: 08:35. |