class Ritmo {
private var id:Number
private var pasos:Array;
private var current:Number;
public var onPaso:Function;
public var onEnd:Function;
public function Ritmo(){
pasos = new Array();
}
public function play(){
current = 0;
next();
}
public function addPaso(tiempo:Number){
var tmp:Array = new Array();
for (var i:Number = 1; i<arguments.length; i++) {
tmp.push(arguments[i]);
}
pasos.push({tiempo:tiempo,arg:tmp});
}
private function next(){
clearInterval(id);
id = setInterval(this,"next",pasos[current].tiempo);
if(pasos[current] != null){
onPaso(pasos[current]);
current++;
}else onEnd();
}
public function toString():String{
return "Ritmo";
}
/* uso
var ritmo:Ritmo = new Ritmo();
ritmo.addPaso(100,"a","b");
ritmo.addPaso(200,"b","a");
ritmo.addPaso(500,"z","s");
ritmo.addPaso(700,"s","z");
ritmo.onPaso = function(obj:Object) {
trace(this);
trace(obj.tiempo);
trace(obj.arg);
trace("-------------------");
};
ritmo.onEnd = function(){
trace("se acabo");
}
ritmo.play();
*/
}