canvas两种形式动画(用canvas做一个DVD待机动画的实现代码)
类别:Web前端 浏览量:112
时间:2021-10-01 01:03:11 canvas两种形式动画
用canvas做一个DVD待机动画的实现代码免责声明
不是打算教 canvas,只是觉得好玩就简单看了一下。
意思就是做得略粗糙,别喷我。。
效果
帧数略低,实际当然流畅得多。
实现 HTML
<!DOCTYPE html> <head> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <style> * {margin: 0;padding: 0;} body {background-color: lightblue;} #canvas {background-color: black;width: 100vw;} </style> </head> <body> <canvas id="canvas"></canvas> <script>/* 见下 */</script> </body>
JS
window.onload = function () { let // 画布 ctx = document.getElementById('canvas').getContext('2d'), // 画布大小 canvas_width = document.getElementById('canvas').width, canvas_height = document.getElementById('canvas').height, // DVD 图标的文本颜色、字体、背景色 text_color = ['green', 'blue', 'purple', 'yellow', 'white', 'yellow', 'white'], text_font = 'italic bold 50px yahei', background_color = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'], // 背景矩形的尺寸 background_width = 110, background_height = 50, // 向矩形添加文本时,高度有点偏差 fix_height = 7, // 速度,每次重绘移动 0.5 px speed_x = 0.5, speed_y = 0.5, // 移动方向,初始为 'r-b' 右下 direction = 'r-b', // 图标 x 和 y 坐标,初始为 0 position_x = 0, position_y = 0, // 碰撞次数,用来计算背景和文本颜色 count = 0 dvd() function dvd() { // 移动方向 switch (direction) { // 右下 case 'r-b': position_x += speed_x position_y += speed_y break // 右上 case 'r-t': position_x += speed_x position_y -= speed_y break // 左下 case 'l-b': position_x -= speed_x position_y += speed_y break // 左上 case 'l-t': position_x -= speed_x position_y -= speed_y break } // 清空画布 ctx.clearRect(0, 0, canvas_width, canvas_height) // 重绘 ctx.fillRect(position_x, position_y, background_width, background_height) // 碰撞检测 // 底 if (position_y + background_height >= canvas_height) { direction = direction.replace('b', 't') // 碰撞次数统计 count += 1 } // 右 if (position_x + background_width >= canvas_width) { direction = direction.replace('r', 'l') count += 1 } // 左 if (position_x < 0) { direction = direction.replace('l', 'r') count += 1 } // 上 if (position_y < 0) { direction = direction.replace('t', 'b') count += 1 } // 文本 ctx.font = text_font ctx.fillStyle = text_color[count % 7] ctx.fillText("DVD", position_x, position_y + background_height - fix_height) // 背景色 ctx.fillStyle = background_color[count % 7] // 开始动画 window.requestAnimationFrame(dvd) } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- html5 canvas绘图(使用html5 canvas绘制圆环动效)
- canvas3d效果(JavaScript canvas实现七彩太阳光晕效果)
- htmlcanvas的使用(html2canvas生成清晰的图片实现打印的示例代码)
- canvas绘制渐变图形(Canvas实现放大镜效果完整案例分析附代码)
- canvas跟随鼠标绘制(如何在Canvas上的图形/图像绑定事件监听的实现)
- canvas小程序海报(使用canvas生成含有微信头像的邀请海报没有微信头像问题)
- 微信小程序canvas缩放(微信小程序之html5 canvas绘图并保存到系统相册)
- canvas进阶教程(原生canvas制作画图小工具的踩坑和爬坑)
- html5+canvas动画(解析html5 canvas实现背景鼠标连线动态效果代码)
- canvas实现滚动列表(Canvas实现贝赛尔曲线轨迹动画的示例代码)
- html5canvas曲线图例子(html5利用canvas实现颜色容差抠图功能)
- html5canvas动画(html5 canvas 实现光线沿不规则路径运动)
- html5 canvas touch(html5 canvas手势解锁源码分享)
- canvas两种形式动画(用canvas做一个DVD待机动画的实现代码)
- canvas如何保存当前的图片(canvas如何实现多张图片编辑的图片编辑器)
- html5canvas画图有什么用(Html5基于canvas实现电子签名并生成PDF文档)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
热门推荐
- python中if的条件语句(浅谈Python的条件判断语句if/else语句)
- sqlparamter如何传递nvarchar(max) 参数
- 宝塔面板终端密码错误(Bt宝塔面板忘记用户名密码的具体情况分析和解决应对)
- mysqldump属于哪种备份(MySQLDump的备份小技巧)
- 一个网站服务器有多大(主流网站服务器配置有哪些组成 主流网站服务器多少钱)
- css文本怎么控制边距(css中text-overflow属性与文本截断详解)
- 腾讯云查看ftp用户名密码(腾讯云服务器ftp连不上的解决办法)
- docker镜像无法删除 Error:No such image:xxxxxx解决(docker镜像无法删除 Error:No such image:xxxxxx解决)
- python中的1和0(python把1变成01的步骤总结)
- sqlserver数据库备份还原(sqlserver数据库高版本备份还原为低版本的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9