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 相关文章推荐
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
js实现多选项切换导航菜单的方法
Feb 06 Javascript
jQuery实现的背景动态变化导航菜单效果
Aug 24 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
详解如何较好的使用js
Dec 16 Javascript
Jqprint实现页面打印
Jan 06 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 Javascript
基于Node的Axure文件在线预览的实现代码
Aug 28 Javascript
JSON获取属性值方法代码实例
Jun 30 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
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Django实现单用户登录的方法示例
2019/03/28 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
高中毕业自我鉴定
2013/12/19 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
环境建议书
2015/02/04 职场文书
工作会议通知
2015/04/15 职场文书
酒会开场白大全
2015/06/01 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers