Canvas 帧动画吃苹果小游戏
程序员文章站
2022-06-22 18:33:11
Canvas 帧动画吃苹果小游戏这篇文章主要介绍了Canvas 帧动画吃苹果小游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 20-08-05...
先看页面效果。下面四个按钮分别表示开始、结束、暂停、继续
下面是帧动画图片素材:
帧动画的实现,关键是canvas api ctx.drawimage() (9个参数)和 setinterval 定时器。
设置图片的视图窗口,每次执行定时任务,位移展示下一帧图片。
直接上代码,ctrl+c/v 即插即用
<!doctype html> <html> <head> <meta charset="utf-8"> <title>帧动画</title> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> <div class=""> <button class="start-btn" type="button">重新吃</button> <button class="end-btn" type="button">不吃了</button> <button class="pause-btn" type="button">歇一歇</button> <button class="continue-btn" type="button">继续吃</button> </div> <script type="text/javascript"> const canvas = document.getelementbyid("canvas") canvas.style.border = "1px solid black" const ctx = canvas.getcontext("2d") const img = new image() // 创建图片对象 let timer // 定时器标识符 let millisec = 300 // 执行时间间隔 let colindex = 0 // 列数 let rowindex = 0 // 行数 const timerfun = () => { // 声明定时器执行函数 console.log("设置定时器"); ctx.clearrect(0, 0, canvas.style.width, canvas.style.height) // 清除画布 if (rowindex < 3) { // 如果是前5帧 ctx.drawimage(img, colindex * 240, rowindex * 240, 200, 200, 50, 50, 200, 200) // 图片对象,x坐标,y坐标(注:图片上定位的坐标),width,height(图片上截取的大小),x坐标,y坐标(注:图片在画布上的起点,即左上角),width,height(缩放,不是裁剪) colindex++ // 下一帧 if (colindex > 4) { colindex = 0 rowindex++ } } else { colindex = 0 rowindex = 0 } } img.onload = () => { timer = setinterval(timerfun, millisec) } img.src = "image/apple.jpg" const startbtn = document.getelementsbyclassname('start-btn')[0] const endbtn = document.getelementsbyclassname('end-btn')[0] const pausebtn = document.getelementsbyclassname('pause-btn')[0] const continuebtn = document.getelementsbyclassname('continue-btn')[0] startbtn.addeventlistener('click', () => { console.log("点击开始", timer) clearinterval(timer) colindex = 0 // 列数 rowindex = 0 // 行数 timer = setinterval(timerfun, millisec) }) endbtn.addeventlistener('click', () => { console.log("点击结束", timer) clearinterval(timer) colindex = 0 rowindex = 0 ctx.drawimage(img, colindex * 240, rowindex * 240, 200, 200, 50, 50, 200, 200) timer = 0 }) pausebtn.addeventlistener('click', () => { console.log("点击暂停", timer) clearinterval(timer) timer = 0 }) continuebtn.addeventlistener('click', () => { if (timer) { alert('吃着呢,别催') return } console.log("点击继续", timer) timer = setinterval(timerfun, millisec) }) </script> </body> </html>
到此这篇关于canvas 帧动画吃苹果小游戏的文章就介绍到这了,更多相关canvas 帧动画内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
上一篇: 是否需要虚拟防火墙?
下一篇: Volatility FAQ