| /* |
| 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.deprecated("dojo.animation.AnimationSequence is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5"); |
| dojo.animation.AnimationSequence = function (repeatCount) { |
| this._anims = []; |
| this.repeatCount = repeatCount || 0; |
| }; |
| dojo.lang.extend(dojo.animation.AnimationSequence, {repeatCount: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; |
| } |
| } |
| } |
| }}); |
| |