<style type="text/css">
canvas { position:absolute; border:#0F0 thin dotted; top: 60px; left: 40px; width: 400px; height: 400px; }
</style>
<script>
// DECLARE requestAnimFrame
window.requestAnimFrame = ( function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
// DEFINE YOUR GLOBAL VARIABLES HERE
var canvas, canvas0;
var context0;
var context = new Array();
var counter, inc;
var layers;
var cw = 400;
var ch = 400;
// INITIALIZE THE STARTING FUNCTION
function setup() {
counter = 0;
inc = 1;
draw(); // THIS IS WHERE AL HAPPENS
document.addEventListener("click", addCanvas, false);
}
function addCanvas() {
var newLayer = document.createElement('canvas');
document.body.appendChild(newLayer);
var layers = document.getElementsByTagName('canvas').length;
var canvasId = "canvas" + (layers-1);
newLayer.id = canvasId;
newLayer.width = cw;
newLayer.height = ch;
}
function draw() {
if (counter > Math.PI*2 || counter < 0) { inc *= -1; }
counter += 0.1*inc;
for (var i=0; i<document.getElementsByTagName('canvas').length; i++ ) {
// FOR TESTING PURPOSES
canvas = document.getElementsByTagName('canvas').item(i).id;
document.getElementById('display').innerHTML = canvas;
//////////////////
context[i] = document.getElementsByTagName('canvas').item(i).getContext('2d');
context[i].clearRect(0, 0, cw, ch);
context[i].save();
context[i].translate(cw/2, ch/2);
context[i].rotate(counter+i);
var R = Math.round(counter*20+i*10);
var G = 100 + Math.round(155 - i*10);
var B = 100 + Math.round(counter*20);
context[i].fillStyle = "rgba("+R+","+G+","+B+", 0.1)";
context[i].fill();
context[i].fillRect(-50-20*counter/2,-50-20*counter/2,100+20*counter-i*2,100+20*counter);
context[i].restore();
}
requestAnimFrame(draw);
}
</script>
<body onload="setup()">
<canvas id="canvas0" width="400" height="400"></canvas>