canvas实现绘制吃豆鱼效果


Posted in Javascript onJanuary 12, 2017

话不多说,请看代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>canvas吃豆鱼</title>
 </head>
 <style>
 body{
 text-align:center;
 }
 canvas{
 background: #efefef;
 } 
 </style>
 <body>
 <h1>
 角度转为弧度:<br />
 弧度=2*PI*角度/360=角度*PI/180
 </h1>
 <!--画布的宽和高只能使用属性,不能使用样式-->
 <canvas id='a1' width="500" height="400"></canvas>
 </body>
</html>
<script>
 var ctx=a1.getContext('2d');//得到画布上的画笔并设置绘制方式
 function openMouse(){
 //绘制圆(3/4)
 ctx.beginPath();//开始一条路径
 ctx.arc(250,200,100,45*Math.PI/180,315*Math.PI/180);//圆心为(250,200),半径为100
 ctx.lineTo(250,200);
 ctx.closePath();
 ctx.stroke();//勾勒轮廓/描边
 ctx.fillStyle='#00ffff';
 ctx.fill();
 eye();
 }
 //openMouse();
 function closeMouse(){
 ctx.beginPath();//开始一条路径
 ctx.arc(250,200,100,0*Math.PI/180,360*Math.PI/180);//圆心为(250,200),半径为100
 ctx.lineTo(250,200);
 ctx.closePath();
 ctx.stroke();//勾勒轮廓/描边
 ctx.fillStyle='#00ffff';
 ctx.fill();
 eye();
 }
 //closeMouse();
 //绘制公共部分眼睛
 function eye(){
 //绘制眼睛
 ctx.beginPath();
 ctx.arc(250,200-100/2,25,0,2*Math.PI);//眼睛半径为25
 ctx.stroke();
 ctx.fillStyle='#001900';
 ctx.fill();
 //绘制眼神光
 ctx.beginPath();
 ctx.arc(265,140,5,0,2*Math.PI);//眼神光半径为5
 ctx.stroke();
 ctx.fillStyle='#ffffff';
 ctx.fill();
 }
 var isOpen=true;//定义变量isOpen:是否张开
 var timer=setInterval(function(){
 var ctx=a1.getContext('2d');
 ctx.clearRect(0,0,500,400);//清空画布大小
 if(isOpen){
 closeMouse();
 isOpen=false;
 }else{
 openMouse();
 isOpen=true;
 }
 },500);
</script>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Dom在ajax技术中的作用说明
Oct 25 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
Jun 21 Javascript
jquery利用ajax调用后台方法实例
Aug 23 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
Dec 07 Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 Javascript
使用node-media-server搭建一个简易的流媒体服务器
Jan 20 Javascript
微信小程序-小说阅读小程序实例(demo)
Jan 12 #Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 #Javascript
JS实现仿百度文库评分功能
Jan 12 #Javascript
移动端基础事件总结与应用
Jan 12 #Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 #Javascript
简单的渐变轮播插件
Jan 12 #Javascript
那些精彩的JavaScript代码片段
Jan 12 #Javascript
You might like
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Django框架表单操作实例分析
2019/11/04 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
初学者学习Python好还是Java好
2020/05/26 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
消防安全标语
2014/06/07 职场文书
会计学毕业生求职信
2014/06/25 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
毕业论文答辩开场白
2015/05/27 职场文书