var canvas = document.getElementById( 'canvas' ),
ctx = canvas.getContext( '2d' ),
canvas2 = document.getElementById( 'canvas2' ),
ctx2 = canvas2.getContext( '2d' ),
// full screen dimensions
cw = window.innerWidth,
ch = window.innerHeight,
charArr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],
maxCharCount = 100,
fallingCharArr = [],
fontSize = 10,
maxColums = cw/(fontSize);
canvas.width = canvas2.width = cw;
canvas.height = canvas2.height = ch;
function randomInt( min, max ) {
return Math.floor(Math.random() * ( max - min ) + min);
}
function randomFloat( min, max ) {
return Math.random() * ( max - min ) + min;
}
function Point(x,y)
{
this.x = x;
this.y = y;
}
Point.prototype.draw = function(ctx){
this.value = charArr[randomInt(0,charArr.length-1)].toUpperCase();
this.speed = randomFloat(1,5);
ctx2.fillStyle = "rgba(255,255,255,0.8)";
ctx2.font = fontSize+"px san-serif";
ctx2.fillText(this.value,this.x,this.y);
ctx.fillStyle = "#0F0";
ctx.font = fontSize+"px san-serif";
ctx.fillText(this.value,this.x,this.y);
this.y += this.speed;
if(this.y > ch)
{
this.y = randomFloat(-100,0);
this.speed = randomFloat(2,5);
}
}
for(var i = 0; i < maxColums ; i++) {
fallingCharArr.push(new Point(i*fontSize,randomFloat(-500,0)));
}
var update = function()
{
ctx.fillStyle = "rgba(0,0,0,0.05)";
ctx.fillRect(0,0,cw,ch);
ctx2.clearRect(0,0,cw,ch);
var i = fallingCharArr.length;
while (i--) {
fallingCharArr[i].draw(ctx);
var v = fallingCharArr[i];
}
requestAnimationFrame(update);
}
update();