一、Canvas简介

提到Canvas相信做前端开发的同学都不陌生,它是一个用于绘制图形的容器,我们会在一些特殊场景时需要用到Canvas,比如我们要在页面上显示一个流程图,这个流程图需要根据后端返回的数据动态显示时,就可以使用Canvas进行绘制,它可以实时的根据数据进行计算,再比如,我们要做一个动画效果,特别是需要有交互的动画效果时,我们就可以使用Canvas去实现。

二、文章简介

相信大部分同学使用Canvas也只是绘制静态界面,比如上面提到的流程图,如果要让你用Canvas做一个动画,或者是接下来我们将要实现的球体碰撞效果,你是否就会有点无从下手的感觉,这篇文章我将带你从零到一手撸一个球体碰撞的交互效果,不使用任何第三方库,详细为你讲解每一步的实现逻辑,真正做到保姆级教学,这样才能保证你能从中学到原理上的东西,以后做Canvas动画时就可以做到信手拈来,学完该课程,就相当于掌握了sphere-collision这个库的核心源码。在文章的最后我也会将完整的源代码贴出来供大家参考。

下面是最终实现的效果

三、搭建开发界面

实现Canvas动画的核心原理就是使用window. requestAnimationFrame,一帧一帧不停地进行整个页面的绘制,就像是播放幻灯片一样,当播放的帧率达到一定时,那么人的肉眼就看不出中间的切换卡顿,而看到的是流畅的动画效果。后面我们写的逻辑代码都是在loop这个函数中循环执行的。

index.html内容

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Canvas实现球体碰撞交互效果</title><style>html,body {margin: 0;padding: 0;width: 100%;height: 100%;overflow: hidden;}</style></head><body><canvas id="myCanvas">您的浏览器版本过低,请更新浏览器版本</canvas><script src="index.js"></script></body>
</html>

index.js内容

const canvasWidth = window.innerWidth; // 画布宽度
const canvasHeight = window.innerHeight; // 画布高度
const canvasBgColor = "#222222"; // 画布背景颜色const canvas = document.getElementById("myCanvas");
canvas.width = canvasWidth;
canvas.height = canvasHeight;
const ctx = canvas.getContext("2d");function loop() {// 绘制整个画布的背景色ctx.clearRect(0, 0, canvasWidth, canvasHeight);ctx.fillStyle = canvasBgColor;ctx.fillRect(0, 0, canvasWidth, canvasHeight);requestAnimationFrame(loop);
}// 循环绘制(loop函数中继续调用requestAnimationFrame函数)
requestAnimationFrame(loop);

Canvas实现球体碰撞交互效果(一)相关推荐

  1. 实现球体碰撞,使用这个库就够了

    一.简述 大家在用Canvas实现球体碰撞的动画场景时是否感觉无从下手,或者是知道怎么去实现,但是要进行大量的计算,考虑非常多的细节,比如要考虑将外力分解为水平和垂直两个方向,然后考虑各种碰撞的检测, ...

  2. canvas实现点线动画效果

    效果图 需求分析 点随机产生并向随机方向以随机的速度匀速移动 未点击时,点的总数保持不变:点击时在点击的位置产生数个新的点 点与点之间在一定距离内有细线连接 鼠标在画面中移动时,能够与其他点产生互动 ...

  3. python炫酷动画源代码_Python tkinter实现的图片移动碰撞动画效果【附源码下载】...

    本文实例讲述了Python tkinter实现的图片移动碰撞动画效果.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: #!/usr/bin/python # -*- coding ...

  4. 使用CANVAS实现交互性圆形马赛克效果

    在看D3.js的时候,无意间看到了一个例子,觉得很有趣,像是会分裂的圆形马赛克.看了下代码,使用svg完成的,但是具体实现方式使得在手机端无法把玩,于是就自己实现了一个canvas版本的.代码很简单, ...

  5. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  6. canvas 擦除动画_用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  7. 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果

    先给大家展示效果: 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. ...

  8. Flutter实战视频-移动电商-60.购物车_全选按钮的交互效果制作

    60.购物车_全选按钮的交互效果制作 主要做全选和复选框的这两个功能 provide/cart.dart 业务逻辑写到provide里面 先持久化取出来字符串,把字符串编程list.循环list ca ...

  9. ScrollMagic – 酷毙了!超炫的页面滚动交互效果

    ScrollMagic 是一款 jQuery 插件,它让你可以像使用进度条一样使用滚动条.如果你想在特定的滚动位置开始一个动画,并且让动画同步滚动条的动作,或者把元素粘在一个特定的滚动位置,那么这款插 ...

最新文章

  1. SSM-Spring-19:Spring中JdbcTemplate
  2. 通过七牛云建立私有图床
  3. pdh光端机的优点介绍
  4. what's the python之函数及装饰器
  5. enum是java关键字吗_enum是java关键字吗?
  6. 给next添加彩色标签
  7. mount -o nolock
  8. 精度、速度完美平衡,最新图像分割SOTA模型重磅发布!!!
  9. 初次接触ruby的困惑
  10. 想自学HCIE,有什么好的书籍推荐吗?
  11. CSDN早报-2019-04-29
  12. 超强大的数学计算器——WolframAlpha(含安卓下载连接)
  13. Bitwise Operation
  14. 2019计算机考研大纲考什么,2019计算机考研大纲有哪些变动
  15. 函数、包,字符串处理,错误处理
  16. Redis缓存击穿解决方案之互斥锁
  17. 手把手教你读财报---银行业---第七课
  18. 大数据架构师之路-性能评估
  19. java读写orc文件_java读取hive的orc文件
  20. 如何搞定毕业论文查重

热门文章

  1. 基于Vue开发的D2-Admin框架使用方法
  2. Intel VT‐x/EPT AMD‐V/RVI
  3. NB-IoT之BC95调试记录
  4. 数据可视化简单尝试——成绩雷达图
  5. 做自媒体文笔差,写作没方向?掌握这些方法也能月入1W+
  6. 基于Jabber协议的移动即时通讯系统研究与实现
  7. 谷歌浏览器:网址为 http://192.168.25.132:42/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。
  8. 使用Flash Lite 制作手机主题
  9. 世界杯——手动为梅西标名
  10. 数据分析项目——深圳二手房价分析及价格预测