Показать сообщение отдельно
Старый 12.06.2005, 17:27
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от Nirth
оффтоп : ты вставил последнее слово=)
выходит, что еще не последнее: твой пример <...DelayEvent.create(this.play,2000)> для
возобновления проигрывания работать не будет, потому как play без объекта приложения
ничего не запустит, то что ты передаешь this.play ничего не меняет - все равно это
только ссылка на функцию и вызовется она через setInterval в пустоте..
чтобы заработало придется передать еще и объект, который эту функцию вызовет:
Код:
function create (ob,fnct,dly){
		var arg=arguments.splice(3);// для этого примера не нужна, но если функция с параметрами, то пригодится
		var id = setInterval (function (a){
			fnct.apply(ob,a);
			clearInterval (id);
		}, dly, arg);
}
//////////////////////
this.stop();
create(this,play,1000)
Как класс
Код:
/**
 *	original idea by Silin
 *	@author	        Silin
 *	@version	1.2
 */
class orange.utils.DelayEvent
{
        /**
         *	Creating the delay for function or method
         *	@usage	                orange.utils.DelayEvent.create(myObject,myMethod,delay)
         *      @param  target          target wich has the method to delay
         *	@param	func	        function to delay
         *	@param	delay	        delay in ms
         *	@return	                nothing
         */
	public static function create (target:Object,method : Function, delay : Number) : Void
	{
	        var args:Array = arguments.splice(3);
		var id:Number = setInterval (function (args)
		{
			method.apply(target,args);
			clearInterval (id);
		}, delay, args);
	}
}


Последний раз редактировалось Nirth; 23.06.2005 в 15:11. Причина: дополнил