js+canvas实现动态吃豆人效果


Posted in Javascript onMarch 22, 2017

效果图:

js+canvas实现动态吃豆人效果

代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>吃豆人V01</title>
</head>
<body>
<canvas id="canvas" width="500px" height="500px" style="border: 1px solid black"></canvas>
<script>
 var canvas = document.getElementById("canvas");
 var context = canvas.getContext("2d");
 //TODO 面向对象方式解析
 //TODO 1.创建吃豆人的对象模板
 function Pacman(){
 //TODO 属性
 this.isOpen = true;//TODO 开关
 this.start = 45*Math.PI/180;
 this.end = 315*Math.PI/180;
 //TODO 方法
 //TODO 1.绘制方法
 this.paint = function(){
  //TODO 吃豆人的脸
  context.beginPath();
  context.arc(250,200,100,this.start,this.end);
  context.lineTo(250,200);
  context.closePath();
  context.fillStyle = "yellow";
  context.fill();
  context.stroke();
  //TODO 吃豆人的眼睛
  context.beginPath();
  context.arc(250,150,15,0,Math.PI*2);
  context.fillStyle = "black";
  context.fill();
  //TODO 吃豆人的眼神
  context.beginPath();
  context.arc(255,145,5,0,Math.PI*2);
  context.fillStyle = "white";
  context.fill();
 }
 //TODO 2.控制开闭切换
 this.open = function(){
  if(this.isOpen){//TODO 开口
  this.start = 45*Math.PI/180;
  this.end = 315*Math.PI/180;
  this.isOpen = false;
  }else{//TODO 闭口
  this.start = 0;
  this.end = Math.PI*2;
  this.isOpen = true;
  }
 }
 }
 //TODO 创建吃豆人的对象
 var pacman = new Pacman();
 //TODO 核心控制器
 setInterval(function(){
 context.clearRect(0,0,canvas.width,canvas.height);
 pacman.paint();
 pacman.open();
 },200);
</script>
</body>
</html>

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

Javascript 相关文章推荐
用jQuery打造TabPanel效果代码
May 22 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
JS中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
jQuery操作JSON的CRUD用法实例
Feb 25 Javascript
Javascript中String的常用方法实例分析
Jun 13 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 Javascript
express启用https使用小记
May 21 Javascript
vue中在vuex的actions中请求数据实例
Nov 08 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
JavaScript实现星星等级评价功能
Mar 22 #Javascript
discuz表情的JS提取方法分析
Mar 22 #Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 #Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
Mar 22 #Javascript
Vue计算属性的学习笔记
Mar 22 #Javascript
Angular2实现自定义双向绑定属性
Mar 22 #Javascript
Bootstrap如何激活导航状态
Mar 22 #Javascript
You might like
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
js 深拷贝函数
2008/12/04 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
JS简单计算器实例
2015/01/20 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
python 字符串split的用法分享
2013/03/23 Python
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
python可视化实现代码
2019/01/15 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Python2与Python3的区别点整理
2019/12/12 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
五型班组建设方案
2014/02/10 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis