使用JS与Canvas实现动态吃豆人动画效果
作者:白露时间:2026-10-22 01:34:47浏览:480
本文介绍如何利用JavaScript结合HTML5 Canvas元素,通过面向对象的方式创建一个简单的动态吃豆人动画。文章提供了完整的代码示例,包括吃豆人对象的属性定义、绘制方法以及核心控制器的实现,帮助开发者理解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>
以上内容即为本文的全部分享,期望这些代码示例能对各位在学习或实际开发工作中有所助益,同时也感谢大家的支持。
作者最新文章
AOS.js 动画不触发怎么办?排查 DOM 加载与移动端兼容问题
2026-11-05 17:02:26
sigma.js 怎么实现节点点击、拖拽与悬停提示交互
2026-11-05 15:03:27
Matter.js 与 PixiJS/Three.js 集成:分离物理计算与渲染
2026-11-05 13:43:48
主流JS弹幕库选型指南:Danmaku.js等库的功能与体积对比
2026-11-05 09:28:19
JavaScript点击事件监听与交互效果实例
2026-11-05 09:10:19
