鱼C论坛

 找回密码
 立即注册
楼主: 不二如是

[庖丁解牛] 0 0 6 5 - Canvas粒子动画 - 只挖待填

[复制链接]
发表于 2019-4-11 15:38:48 | 显示全部楼层
学习HTML5中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-5 13:02:29 | 显示全部楼层
123
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-11-3 17:51:08 | 显示全部楼层
想看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-12 10:46:23 | 显示全部楼层
复制了老师的代码,但是并不能生成雪花的效果,参考了前面师兄的代码,修改了一下就可以了。
具体修改在备注中有注释,供后来者参考。
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Canvas</title>
  6.     <style type="text/css">
  7.         *{
  8.             margin: 0;
  9.             padding: 0;
  10.         }
  11.         html,body{
  12.             height: 100%;
  13.         }
  14.         #firstCanvas{
  15.             background-color: #000;

  16.         }
  17.     </style>

  18. </head>
  19. <body>
  20. <canvas id="firstCanvas" width="999" height="666">大兄弟你的浏览器不支持Canvas!!!</canvas>
  21. <script type="text/javascript">
  22.     var canvas=document.getElementById("firstCanvas");
  23.     var context=canvas.getContext("2d");
  24.     var particles = [];
  25.     for( var i = 0; i < 666; i++ ) {
  26.         particles.push( {
  27.             x: Math.random()*window.innerWidth,
  28.             y: Math.random()*window.innerHeight,
  29.             vx: (Math.random()-.5),
  30.             vy: (Math.random()-.5),
  31.             size: 1+Math.random()*3,
  32.             color: "#DDD"
  33.         } )
  34.     }
  35.     function timeUpdate(){
  36.         context.clearRect(0, 0, window.innerWidth, window.innerHeight);
  37.         var len = particles.length;
  38.         var particle;
  39.         for( var i = 0; i < len; i++ ) {
  40.             particle = particles[i];
  41.             particle.x += particles[i].vx;//此处particle.vx应改为particles[i].vx
  42.             particle.y += particles[i].vy;//此处particle.vy应改为particles[i].vy
  43.             
  44.             if(particle.x<=0 || particle.x>=window.innerWidth){
  45.                 particle.vx *= -1;
  46.             }
  47.             if(particle.y<=0 || particle.y>=window.innerHeight){
  48.                 particle.vy *= -1;
  49.             }
  50.             context.fillStyle = particle.color;
  51.             context.beginPath();
  52.             context.arc(particle.x,particle.y,particle.size,0,Math.PI*1.99);//true应该去掉
  53.             context.closePath();
  54.             context.fill();
  55.         }
  56.     }
  57.     setInterval( timeUpdate, 40 );
  58. </script>
  59. </body>
  60. </html>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-7 11:48:11 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-7 18:44:10 | 显示全部楼层
谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-29 20:10:20 | 显示全部楼层
。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 19:13:57 | 显示全部楼层
直接复制不二老师的代码出不来效果的可以看我的分析
图1红色框圈住的名字必须一致(可以命名其他,但必须一致)图2绿色框圈住的名字也必须一致蓝色框是缺少的代码[i]剩下看图更改,注意style里面也要添加内容
test.png 图1
test_2.png 图2
我的效果图
test_3.png
我的代码
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>粒子动画</title>
  6.     <style type="text/css">
  7.         *{
  8.             margin: 0;
  9.             padding: 0;
  10.         }
  11.         html,body{
  12.             height: 100%;
  13.         }
  14.         #firstCanvas{
  15.             background-color: #7700ff;
  16.         }
  17.     </style>

  18. </head>
  19. <body>
  20.     <canvas id="firstCanvas" width="999" height="666">大兄弟你的浏览器不支持Canvas!!!</canvas>

  21.     <script type="text/javascript" >
  22.         var canvas = document.getElementById("firstCanvas");//调用Canvas元素
  23.         var context=canvas.getContext("2d");//返回一个对象
  24.         var parcticles = [];
  25.         for(var i = 0; i < 666; i++ )
  26.         {
  27.             parcticles.push( {
  28.                 x: Math.random() * window.innerWidth,
  29.                 y: Math.random() * window.innerHeight,
  30.                 vx: (Math.random()-.3), //横向随机
  31.                 vy: (Math.random()-.3),//纵向随机
  32.                 size: 1 + Math.random()*3,
  33.                 color: "#DDD"
  34.             } );
  35.         }
  36.         function timeUpdate(){
  37.             context.clearRect(0, 0, window.innerWidth, window.innerHeight); //第一步先清理画布
  38.             var len = parcticles.length;
  39.             var parcticle;
  40.             for( var i = 0; i < len; i++ ) { //循环遍历所有的雪花
  41.                 var parcticle = parcticles[i];
  42.                 parcticle.x += parcticles[i].vx;
  43.                 parcticle.y += parcticles[i].vy;
  44.                 //下面都是边界检查,防止雪花跑出屏幕
  45.                 if(parcticle.x<=0 || parcticle.x>=window.innerWidth){
  46.                     parcticles[i].vx *= -1;
  47.                 }
  48.                 if(parcticle.y<=0 || parcticle.y>=window.innerHeight){
  49.                     parcticles[i].vy *= -1;
  50.                 }
  51.                 context.beginPath();//开始绘制//
  52.                 context.arc(parcticle.x,parcticle.y,parcticle.size,0,Math.PI*1.99);//绘制图形
  53.                 context.closePath();//停止绘制
  54.                 context.fillStyle = parcticle.color;//设置雪花为上面设置的#DDD
  55.                 context.fill();//对所有绘制好的图形,进行上色
  56.             }
  57.         }
  58.         setInterval( timeUpdate, 40 );
  59.     </script>
  60. </body>
  61. </html>
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2020-4-2 03:06:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-10 11:35:30 | 显示全部楼层
效果图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 16:59:20 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-31 22:41:04 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-3 16:40:08 | 显示全部楼层
a
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-14 07:44:35 | 显示全部楼层
没效果呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 17:49:19 | 显示全部楼层
11
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 11:23:37 | 显示全部楼层
kk
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-14 20:36:07 From FishC Mobile | 显示全部楼层
我想知道。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-29 17:25:41 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-9 08:08:22 | 显示全部楼层
66666666666666666
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-22 17:47:28 | 显示全部楼层
123
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-5 12:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表