Código :
/////////////////////////////////////////////////////////////////////// // Temporizador /////////////////////////////////////////////////////////////////////// // // METODOS PUBLICOS // // Temporizador( // sg:Number, // tiempo de espera // loop:(Number o Boolean)// numero de veces q se repetira ,por defecto false, // si es true no se detiene hasta q no llames a end() // ) // // setParametros ( // target, nivel donde se encuentra la estancia // func:(string o Function), function q se ejecutara cuando acabe el temporizador , // la function recibe un array si se le paso parametros // ar:Array , argumentos q se le pasa a la function [opcional] // ) // // by buho29 // /* EJEMPLOS /////////////////1/////////////////// // pasando la function como string var pepe = new Temporizador(1); pepe.setParametros (this,"terminado",["function como string"]) terminado = function (evt){trace(evt)} /////////////////2/////////////////// //pasando la function var pepa = new Temporizador(2); pepa.setParametros (this,terminada,["function normal","tumadre"]) function terminada(evt){trace(evt)} /////////////////3/////////////////// //pasando una function anonima var pepi = new Temporizador(3); pepi.setParametros (this,function(evt){trace(evt)},["otraForma","tumadre"]) */ class Temporizador { var ID:Number; var params:Array; var obj:Object ; var bucle:Boolean=false; var numVeces:Number; var veces:Number = 1; var funcion; function Temporizador(sg:Number,loop) { if(loop!=undefined){ bucle = true; numVeces = loop; }else if(loop)bucle = true; ID = setInterval(this,"isTerminado",sg*1000); } function setParametros (target,func,ar:Array){ obj = target ; funcion = func ; params=ar; } private function isTerminado () { if(!bucle) terminado(true); else { if(veces==numVeces)terminado(true); else { terminado(false); veces++; } } trace("ff") updateAfterEvent(); } function terminado (borrar){ if(borrar)end() if(typeof(funcion)== "string") obj[funcion](params); else funcion.apply(obj,[params]); } function end (){ clearInterval (ID); } }