Search

Rss Posts

Rss Comments

Login

 

Posts in ‘ActionScript 3.0’

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 мс).

Поддается сборке муссора.