效果请看:

http://keleyi.com/a/bjad/p9exlcwi.htm

请使用支持HTML5的浏览器查看效果。

 

以下是代码:

 
 3 <html>
 4 <body>
 5 <canvas width="300" height="300" id="keleyieye" style="background:black"></canvas>
 6 </body>
 7 </html>
 8 <script>
 9 
10 var keleyieye = document.getElementById('keleyieye');
11 var graphics = keleyieye.getContext('2d');
12 var centerX = keleyieye.width/2;
13 var centerY = keleyieye.height/2;
14 //设置角度值,同时也就眼睛的横坐标长度
15 var angle = 300;
16 //因为眨眼采用的sin()函数组成,所以其自然有幅值这一个属性。
17 var amplitude = 30;
18 //创建一个用于保存幅值的变化的变量,采用amplitude的缩写ampl,便于认识 ^_^
19 var ampl = 20;
20 //灰眼球的半径
21 var blackBallSemi = 25;
22 var flag = true;
23 
24 function paint() {
25 if (flag) {
26 ampl++;
27 if (ampl >= amplitude) {
28 flag = false;
29 }
30 }else {
31 ampl--;
32 if (ampl <= 0) {
33 flag = true;
34 }
35 }
36 //以centerX,centerY为中心,在眼睛所在的地方绘制一个白色的背景底色,
37 //长度为angle,宽为amplitude*2
38 
39 graphics.fillStyle="white";
40 
41 graphics.fillRect(centerX-angle/2, centerY-amplitude, angle, amplitude*2);
42 
43 //以centerX,centerY为中心,绘制一个灰色的眼球
44 //半径为blackBallSemi*2
45 graphics.beginPath();
46 graphics.fillStyle="black";
47 graphics.arc(centerX, centerY, blackBallSemi,0,Math.PI*2,true);
48 graphics.fill();
49 graphics.beginPath();
50 //以centerX,centerY为中心,绘制一个白色的瞳孔
51 //半径为blackBallSemi/2
52 graphics.fillStyle="white";
53 graphics.arc(centerX,centerY, blackBallSemi/4,0,Math.PI*2,true);
54 graphics.fill();
55 graphics.strokeStyle="red";
56 for (var i = 0; i < angle; i++) {
57 graphics.moveTo(centerX-angle/2+i,centerY-30);
58 graphics.lineTo(centerX-angle/2+i, centerY-(Math.floor(Math.sin(Math.PI*i/angle)*ampl)));
59 graphics.moveTo(centerX-angle/2+i,centerY+30);
60 graphics.lineTo(centerX-angle/2+i,centerY+(Math.floor(Math.sin(Math.PI*i/angle)*ampl)));
61 graphics.stroke();
62 }
63 
64 
65 }
66 // paint();
67 setInterval(paint,30);
68 </script>

 

web前端:http://www.cnblogs.com/jihua/p/webfront.html

posted on 2014-01-20 23:12  计划  阅读(2591)  评论(0编辑  收藏  举报