function Timeline (tweens) { this.tweens = tweens this.index = 0 } Timeline.prototype.advance = function(){ var tl = this.tweens[this.index % this.tweens.length] if (tl.index == -1) { tl.reset() tl.index = 0 requestAnimationFrame(this.advance.bind(this)) } else if (tl.index < tl.timeline.length){ tl.timeline[ tl.index ](this.advance.bind(this)) tl.index += 1 } else { this.index += 1 tl.index = -1 requestAnimationFrame(this.advance.bind(this)) } }