我有一个名为generateNoise()
的函数,它创建一个画布元素并将随机RGBA值绘制到其中,从而呈现噪点的外观。
我的问题
最好的方法是什么,可以无限地动画化这个噪声,以使其具有更多的生命力?
function generateNoise(opacity) {
if(!!!document.createElement('canvas').getContext) {
return false;
}
var canvas = document.createElement('canvas'),
ctx = canvas.getContext('2d'),
x,y,
r,g,b,
opacity = opacity || .2;
canvas.width = 55;
canvas.height = 55;
for (x = 0; x < canvas.width; x++){
for (y = 0; y < canvas.height; y++){
r = Math.floor(Math.random() * 255);
g = Math.floor(Math.random() * 255);
b = Math.floor(Math.random() * 255);
ctx.fillStyle = 'rgba(' + r + ',' + b + ',' + g + ',' + opacity + ')';
ctx.fillRect(x,y,1,1);
}
}
document.body.style.backgroundImage = "url(" + canvas.toDataURL("image/png") + ")";
}
generateNoise(.8);
window.setInterval('generateNoise(.8)',50);
- CrayonViolentMath.random
和Math.floor
的调用:x = Math.floor(Math.random() * 0xffffff); r = x & 0xff; g = (x & 0xff00) >>> 8; b = (x & 0xff0000) >>> 16;
- Paul S.requestAnimationFrame(generateNoise);
就可以实现你所需的功能,将其放在函数的第一行即可。http://jsfiddle.net/eS9cc/ - Mouseroot