HTML5 canvas实现雪花飘落特效

2019-01-28 22:05:15刘景俊

此时效果如如下:

 

注意:canvas默认是有一个初始化高度和宽度的,所以不用去纠结

2、画布满屏显示

JavaScript代码如下:

JavaScript Code复制内容到剪贴板
  1. //获取mycanvas画布        var can = document.getElementById("mycanvas");   
  2.     var ctx = can.getContext("2d");        //画布宽度   
  3.     var wid = window.innerWidth;        //画布高度   
  4.     var hei = window.innerHeight;        can.width=wid;   
  5.     can.height=hei;   

此时效果如如下:

3、初始化生成固定数量的雪花

根据我们上述需求分析及知识点解读,首先雪花的数量是固定的,所以我们需要定义一个变量var snow = 100;这里假设雪花数量为100,;

生成雪花的时候,每个雪花半径、位置都不同,我们把每个雪花当做一个对象,那么这个对象的属性就包含:半径、坐标(X、Y),那么一个雪花对象可以写成var snowOject={x:1,y:10,r:5},这里就代表一个坐标为(1,10)半径为5的圆形雪花;本示例中由于半径和坐标都为随机数,故使用Math.random()分别为100个雪花生成半径、坐标(X、Y);

那我们这里是100个雪花,所以为了方便后面操作,就用一个数组保存这100个雪花对象。

JavaScript代码如下:

JavaScript Code复制内容到剪贴板
  1. //雪花数目    var snow = 100;   
  2. //雪花坐标、半径    var arr = []; //保存各圆坐标及半径   
  3. for (var i = 0; i < snow; i++) {    arr.push({   
  4. x: Math.random() * wid,    y: Math.random() * hei,   
  5. r: Math.random() * 10 + 1    })   
  6. }   


4、绘制雪花

上面我们已经将100个雪花半径、坐标(X、Y)生成,下面就是循环使用canvas画出雪花了(这里就是画圆),这里定义一个函数