随笔 - 285,  文章 - 0,  评论 - 142,  阅读 - 260万

 

效果请看:

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   计划  阅读(2616)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示