137 lines
3.3 KiB
JavaScript
137 lines
3.3 KiB
JavaScript
![]() |
/*
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|