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代码经典广告
Oct 21 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
Dec 19 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 Javascript
Vue.use源码分析
Apr 22 Javascript
JavaScript中的高级函数
Jan 04 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
vue使用websocket的方法实例分析
Jun 22 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
Nginx实现反向代理
2017/09/20 Servers
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
nodejs aes 加解密实例
2018/10/10 NodeJs
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Django 限制访问频率的思路详解
2019/12/24 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
python不同版本的_new_不同点总结
2020/12/09 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
美国旅游网站:Tours4Fun
2017/02/17 全球购物
法学院方阵解说词
2014/01/29 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
世博会口号
2014/06/20 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
小马王观后感
2015/06/11 职场文书