Version 1.7Animation timelines
API Quick Reference
JavaScript is required to use the quick reference
Using A Timeline For Advanced Animation
A Timeline is used to chain and synchronise several separate animations. Chaining is done by placing the animation you wish to build up in to a channel. Synchronisation is done by having several channels.
Channels in a timeline can contain Animations, numbers & functions. Animations are run, numbers make a channel pause in seconds and functions are called when the timeline reaches it.
Timelines also have standard events and methods similar to Animations. See the API for a full listing including examples.
Example: Creating a mexican wave
This example creates a number of divs which increase and decrease in size.
var howManyDivs = 100, htmlStr = [], i, len; //create an html string containing the amount of divs we'll animate
for (i = 0; i < howManyDivs; i++) { htmlStr[i] = "<div style='left:" + i*7 + "px'></div>";
}
//create the divs
glow.dom.get("#waveContainer").html(htmlStr.join("")); var waveDownAnims = [], waveUpAnims = []; //create a wave up & wave down anim for each div
var wavingDivs = glow.dom.get("#waveContainer div").sort().each(function(i) { waveDownAnims[i] = glow.anim.css(this, 1, { "top": {from:70, to:0} }, { tween: glow.tweens.easeBoth() } ); waveUpAnims[i] = glow.anim.css(this, 1, { "top": {from:0, to:70} }, { tween:glow.tweens.easeBoth() } );
}); //create a channel for each div.
//Each channel will have a difference pause at the start var channels = [];
for (i = 0, len = waveUpAnims.length; i < len; i++) { channels[i] = [ (i / 100), waveDownAnims[i], waveUpAnims[i] ];
} //put it all together and play
new glow.anim.Timeline(channels, {loop:true}).start();
The above also requires the following CSS:
#waveContainer { overflow: hidden; height: 100px; position: relative;
}
#waveContainer div { position: absolute; width: 6px; height: 30px; background: #700; margin-right: 1px; top: 70px;
}
The above creates 100 divs which move down then up again. Each div does this 1/50 of a second since the previous started. The Timeline ensures the divs don't get out of sync with each other.