canvas粒子反射游动动画效果
代码语言:html
所属分类:粒子
代码描述:canvas粒子反射游动动画效果,无需依赖第三方库
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { margin: 0; overflow: hidden; background-color:black } </style> </head> <body translate="no"> <canvas id="canvas" > </canvas> <script> let w,h,particles, ctx = canvas.getContext('2d'); resize(); init(); requestAnimationFrame(draw); addEventListener('resize', resize); addEventListener('click', init); function init() { ctx.clearRect(0, 0, w, h); particles = Array(h / 10 | 0). fill(0). map((e, i) => newParticle()); } function draw(t) { requestAnimationFrame(draw); if (particles.length > 3000) return; t /= 1000; particles.forEach(p => { p.cooldown -= 0.1; // if (Math.random()>0.99){ // p.dx = Math.random()*2-1 // p.dy = Math.random()*2-1 // } p.x += p.dx; p.y += p.dy; if (Math.abs(p.x) > w / 2) { p.x = -p.x; p.y = -Math.sign(p.y) * Math.abs(p.y); p.dy = -Math.sign(p.dy) * Math.abs(p.dy); } if (Math.abs(p.y) > h / 2) p.y = -p.y; if (!p.fill) p.fill = `hsl(${p.color},55%,55%)`; ctx.fillStyle = p.fill; ctx.fillRect(w / 2 + p.x - 1, h / 2 + p.y - 1.........完整代码请登录后点击上方下载按钮下载查看
网友评论0