blob: 6d23c61951ec438b20d670c15a4c6cce924894e4 [file] [log] [blame]
/*
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;
}
}
}
}});