myCallLater
Июнь 25
Многие знают о полезном методе callLater(), который позволяет вызвать ваш метод “чуть позже”. Зачем это нужно - совсем другая история.
Этот метод определен в UIComponent, следовательно доступен только для визуальных компонентов, да и то только для тех, которые в дисплей листе. Дело в том, что эти методы ставятся в очередь, и выполнятся на следующем кадре когда запустится обработчик onEnterFrame. Следовательно, “чуть позже” значит 1/frameRate секунд. Вобщем тоже не всегда удобно.
Короче, я использую свой статический метод, который закидываю в пакет утилит.
public static function myCallLater (func : Function,
args : Array = null,
delay : Number = 100) : void
{
if (func != null)
{
var timer : Timer = new Timer (delay, 1);
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE,
function (event : TimerEvent) : void
{
timer.stop();
(args != null) ?
func.apply(this, args) :
func.call();
}
);
}
}
Ему нужно сказать имя метода, его параметры (если есть), и через сколько миллисекунд его вызвать (по-умолчанию 100 мс).
Поддается сборке муссора.