Цитата:
|
Сообщение от 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);
}
}