用html做一个拍拍网界面视频,用canvas做一个DVD待机动画的实现代码
免责声明
不是打算教 canvas,只是觉得好玩就简单看了一下。
意思就是做得略粗糙,别喷我。。
效果
帧数略低,实际当然流畅得多。
实现 HTML
* {margin: 0;padding: 0;}
body {background-color: lightblue;}
#canvas {background-color: black;width: 100vw;}
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)
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
用html做一个拍拍网界面视频,用canvas做一个DVD待机动画的实现代码相关推荐
- 用html做一个拍拍网界面视频,html制作网页必做入门练习题一教程文件.ppt
html制作网页必做入门练习题一教程文件.ppt 沃克科技 第一章上机 HTML的基本标签 相关回顾 HTML文档的结构 标签. 标签 . 标签 标签.标签 上机目标 模拟拍拍网建立一个首页 教员讲解 ...
- 用 canvas 做一个 DVD 待机动画
前言 封面大图仅供参考,请以实物为准. 你也曾经为 DVD 待机界面的图标刚好撞进屏幕角落兴奋过吗? 来看段视频回忆一下先. 免责声明 不是打算教 canvas,只是觉得好玩就简单看了一下. 意思就是 ...
- 分享一个可以批量给视频去色并且添加一个光晕效果的方法
我们在剪辑视频的时候往往都会遇到各种各样的剪辑问题,今天小编要给大家分享一个可以批量给视频去色并且添加光晕效果的简单方法,有需要的小伙伴可以进来学习哦! 首先让我们来看一下视频去色并加上光晕效果之后是 ...
- 如何剪辑一个好的短视频?教你一个小技巧,剪辑视频很简单
短视频现在越来越受到大众喜欢,不管是老人.小孩.年轻人都会在有空余时间刷下短视频,不知不觉得短视频已形成人们平时生活中一部分,那么要如何剪辑一个好的短视频,制作短视频可以分成两个部分:第一部分就是选题 ...
- php如何做直播api,网易云视频直播php版api
网易视频云api 作者:得推网络 http://www.deitui.com/index.php?m=openclass 使用网易视频云做视频直播 1.[代码][PHP]代码 /** 网易视频云api ...
- 做自媒体、短视频,如何选择一个合适的背景音乐
好不容易花了半天时间把视频片段剪辑好了,找一个背景音乐又花了3小时,你是不是也这样? 无论是抖音这类的短视频平台,还是西瓜一类的自媒体平台,背景音乐都是一个视频的灵魂,就是bgm. 一个好的视频内容如 ...
- Vue实现个人网盘视频存储界面
前言 随着互联网的发展,人们对于数据存储和共享的需求越来越大.个人网盘作为一种云存储服务,可以方便地存储和分享个人数据,如文档.图片.视频等.本文将介绍如何使用Vue框架开发一个个人网盘视频存储界面, ...
- 百度网盘视频倍速播放方法。
参考:百度网盘视频在线倍速播放 一.使用chorm浏览器 代码: videojs.getPlayers("video-player").html5player.tech_.setP ...
- 网红大咖都在用的,视频封面怎么做?一个小工具即可解决你的烦恼
关于视频封面的制作方法,大周出过好几期的教学. 由于手机的功能有限,让大家都去学ps是很不现实的,大周最近发现了一个非常好用的工具,今天就来分享给大家. 不需要电脑.不用学习ps,一部手机就可搞定,轻 ...
最新文章
- Android自定义组件
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- GDCM:从VR查找标签的测试程序
- Redis 分布式方案Redis Cluster
- [vue] 怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢?
- STM32 DSP库的使用方法
- 鸿蒙系统年底发布?华为人员看到这个山寨网站笑了
- esp启动是什么感觉_第九章 ESP32上电后的启动过程
- 如何在 Mac 上的“磁盘工具”中使用密码加密和保护储存设备?
- 后台访问突然出现一串代码,且不能显示页面
- Practise 5.2测试与封装(黑白盒
- 2021爱分析·产业数字化峰会圆满落幕:加快推动产业数字化,构建产业共生生态
- 为什么很多开发都要转测试....详谈....
- 方法重写和方法重载的区别
- 大数据背后的无奈与焦虑:“128元连衣裙”划分矮穷挫与白富美?
- CityEngine引用别人做好的规则文件
- Linux自学篇——linux命令英文全称及解释
- 阿里巴巴给我们的启示--个人评论
- cnPuTTY CAC 0.78.0.1—PuTTY CAC 0.78中文版本简单说明~~
- JZOJ-senior-5952. 【NOIP2018模拟11.5A组】凯旋而归