今天看到一篇CSS3写的大风车http://www.cnblogs.com/yaojaa/archive/2013/01/30/2882521.html,感觉CSS3太神奇了,这在以前用CSS是想都不敢想的。记得去年自己用canvas也写过这样的大风车,今天我打算用canvas制作一个一模一样的,连速度都一致的大风车。
大家请看下面两张图,你们看得出这两张图有什么区别吗?哪张是CSS3
写的哪张是canvas
写的?
下面就来介绍制作风车的过程。先上代码吧:
1 |
|
首先,确定需要的各项参数:
1 | var canvas = this.canvas,//取得canvas元素 |
循环绘制每个叶子:
1 | for (var i = 0; i < num; i += 1) { |
绘制中间的大圆点:
1 | ctx.beginPath(); |
上面的代码已经可以制作静态的风车了,但是我们要做的是动态的,于是我们需要一个计时器。下面是计时器代码:
1 | window.timer = setInterval(function () { |
动态的风车基本上就做完了,这是运行大风车代码:
1 | var options = { |
修改options
对象的属性就会改变风车的状态。
需要停止风车运转调用这个函数:
1 | hide: function () { |
下面是展示结果的时候了:
以前写这些代码是没有注释的,今天花了好大功夫加上注释,然后在原有基础上做了一些修改,做成了和CSS3写的一模一样的风车。