PDA

Просмотр полной версии : как изменить интервал setInterval не очищая его?


Mur4ik
28.02.2009, 05:57
Суть:
Есть кнопки управления скоростью воспроизведения совершенных ранее действий пользователя. Используя setInterval проигрываются все записи в истории.
Вопрос:
Как динамически изменить задержки (не оч хорошее слово :) ) уже выполняемого setInterval?
Или как узнать какая функция выполняется в текущем интервале?
Тогда можно его очистить и задать выполнение с новым промежутком.

qazwsx
28.02.2009, 10:59
Сделай класс типо такого..

class Interval
{
private var _id:String;
private var params:Array;
private var intervalID:Number;


public function interval()
{
params = [];
_id = '';
}

public function set id(s:String):Void
{
_id = s;
}

public function get id():String
{
return _id;
}

public function addInterval (f:Function, interval:Number):Void
{
clearInterval(intervalID);

params = arguments;

setInterval.apply(null, arguments);
}

public function changeInterval(interval:Number):Void
{
params[1] = interval;

addInterval.apply(this, params);
}

public function stopInterval():Void
{
clearInterval(intervalID);
}

}

Добавлено через 47 секунд
Можно еше контроллер какой небудь для интервалов делать чтобы повеливать сразу всеми.

Mur4ik
28.02.2009, 12:18
qazwsx, спасибо, но в моем случае эт не совсем то что нужно.
У меня есть уже куча чужого кода, в котором нужно выправить баги.
Собственно и интересуюсь как это сделать не меняя всей логики или не переписывая кучу кода.

Понятно что если другого выхода нет то придется это сделать )