/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.animation.AnimationSequence"); dojo.require("dojo.animation.AnimationEvent"); dojo.require("dojo.animation.Animation"); dojo.animation.AnimationSequence = function(repeatCount){ this._anims = []; this.repeatCount = repeatCount || 0; } dojo.lang.extend(dojo.animation.AnimationSequence, { repeateCount: 0, _anims: [], _currAnim: -1, onBegin: null, onEnd: null, onNext: null, handler: null, add: function() { for(var i = 0; i < arguments.length; i++) { this._anims.push(arguments[i]); arguments[i]._animSequence = this; } }, remove: function(anim) { for(var i = 0; i < this._anims.length; i++) { if( this._anims[i] == anim ) { this._anims[i]._animSequence = null; this._anims.splice(i, 1); break; } } }, removeAll: function() { for(var i = 0; i < this._anims.length; i++) { this._anims[i]._animSequence = null; } this._anims = []; this._currAnim = -1; }, clear: function() { this.removeAll(); }, play: function(gotoStart) { if( this._anims.length == 0 ) { return; } if( gotoStart || !this._anims[this._currAnim] ) { this._currAnim = 0; } if( this._anims[this._currAnim] ) { if( this._currAnim == 0 ) { var e = {type: "begin", animation: this._anims[this._currAnim]}; if(typeof this.handler == "function") { this.handler(e); } if(typeof this.onBegin == "function") { this.onBegin(e); } } this._anims[this._currAnim].play(gotoStart); } }, pause: function() { if( this._anims[this._currAnim] ) { this._anims[this._currAnim].pause(); } }, playPause: function() { if( this._anims.length == 0 ) { return; } if( this._currAnim == -1 ) { this._currAnim = 0; } if( this._anims[this._currAnim] ) { this._anims[this._currAnim].playPause(); } }, stop: function() { if( this._anims[this._currAnim] ) { this._anims[this._currAnim].stop(); } }, status: function() { if( this._anims[this._currAnim] ) { return this._anims[this._currAnim].status(); } else { return "stopped"; } }, _setCurrent: function(anim) { for(var i = 0; i < this._anims.length; i++) { if( this._anims[i] == anim ) { this._currAnim = i; break; } } }, _playNext: function() { if( this._currAnim == -1 || this._anims.length == 0 ) { return; } this._currAnim++; if( this._anims[this._currAnim] ) { var e = {type: "next", animation: this._anims[this._currAnim]}; if(typeof this.handler == "function") { this.handler(e); } if(typeof this.onNext == "function") { this.onNext(e); } this._anims[this._currAnim].play(true); } else { var e = {type: "end", animation: this._anims[this._anims.length-1]}; if(typeof this.handler == "function") { this.handler(e); } if(typeof this.onEnd == "function") { this.onEnd(e); } if(this.repeatCount > 0) { this._currAnim = 0; this.repeatCount--; this._anims[this._currAnim].play(true); } else if(this.repeatCount == -1) { this._currAnim = 0; this._anims[this._currAnim].play(true); } else { this._currAnim = -1; } } } });