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);
}
} 
