抖音资讯

douyinzx

canvas动画的实现原理(canvas包含内置动画)

iseeyu2年前 (2024-05-05)抖音资讯122

  • 主要用到的函数也就是arc函数
  • 实现的核心其实是增量,就是上次结束的弧度成为下次弧度的开始,便可以平滑过度。
  • 关于动画,有个实现原理,就是一秒最少要20fps。(fps是帧)

效果图

 

 

一言不合贴的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>甜甜圈</title>
    <style> * { margin: 0; padding: 0; } </style>
</head>
<body>
    <canvas id="pan"></canvas>
</body>
<script> // 初始化函数 var pan = document.getElementById('pan') var width = window.outerWidth var height = window.outerHeight pan.width = width pan.height = height //绘画状态 let opts = { "start": Math.PI * 1.5, "end" : Math.PI * 3, "color": "red" } /** * 绘画圆弧 * @param options 配置文件 */ function drawPie (opts) { /** * @param startAngle 开始弧度 * @param endAngle 结束弧度 * @param timeAngle 每次绘制的弧度的增量 * @param sumAngle 总的绘制的弧度 * @param initStartAngle 一开始弧度和总增量的和 用于判断是否绘画完成 * @param vDraw 绘制的速度 50ms */ var startAngle = opts.start, endAngle = opts.end, timeAngle, sumAngle, initStartAngle, vDraw = 50; sumAngle = startAngle - endAngle if (sumAngle<0) { sumAngle = -sumAngle } initStartAngle = opts.start + sumAngle timeAngle = (sumAngle / 1000) * vDraw var ctx = pan.getContext("2d") // 弧度 = 角度 * Math.PI / 180 var timerHandle = setInterval(function () { /** * 应该获取到上次的结束的弧度,作为下次开始的弧度 **/ ctx.arc(width / 2, height /2, 50, opts.start, opts.start + timeAngle, false ) ctx.strokeStyle=opts.color ctx.lineWidth= 40 ctx.stroke() // 判断是否绘画到需要的点 if(initStartAngle >= opts.start + timeAngle) { opts.start = opts.start + timeAngle } else { console.log('end') clearInterval(timerHandle) } }, vDraw) } drawPie(opts) </script>
</html>

后记:
这个只是个简单的demo,线条的优化等,还有定时函数的替代函数requestAnimationFrame,毕竟js是单线程,同时使用两个高触发的定时函数,是很危险的事情,一不小心就会照成浏览器卡顿。也可以使用worker技术,开启多线程。不过我也没有用worker技术

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/44230.html

相关文章

抖音保存本地关闭了怎么打开(保存别人的抖音视频)

抖音保存本地关闭了怎么打开(保存别人的抖音视频)

由于腾讯限制,现在抖音是不能直接分享给微信或QQ好友的,当你看到搞笑的视频时,是不是一般都保存下来了再发送给好友呢?但是,抖音完整版长视频是不是找不到保存的选项呢?没关系,我们来教教大家抖音完整版视频如何保存。 抖音完整版视频如何保存2019 更新抖音到最新版本,点击视频下方的...

拍短视频一年能赚多少钱?拍短视频需要准备哪

拍短视频一年能赚多少钱?拍短视频需要准备哪

拍短视频一年能赚多少钱?拍短视频需要准备哪些设备? 做短视频一年能赚多少钱? 短视频一年能赚的钱取决于粉丝数量和业务量。在有收入的平台上发送内容可以赚取一定的收入。账户权重越高,收入单价越高。 准备什么? 1.设备 也许很多人首先想到的是购买...

Google广告平台:关于统计信息表格中的各个列《NO.5》

Google广告平台:关于统计信息表格中的各个列《NO.5》

22.已批准的产品(仅限购物广告系列) 此列显示您的产品组中当前已在 Merchant Center 中获得批准的产品的数量。 具体含义:产品要计为已批准,必须在您的 Merchant Center 帐号中获得批准。已批准的产品符合我们在政策和数据质量方面的要求。产品有效必须满足的要求,...

抖音解封用3步秒解法话术(抖音强制解封教程)

抖音解封用3步秒解法话术(抖音强制解封教程)

抖音的账号会由于种种原因被封,其主要原因,都隐藏在抖音社区的规则中。但是,最终结果就是无法使用当前抖音账号。如果账号被封,你绑定的手机,身份证,将永久无法在抖音平台使用。   是不是觉得太不合理了,那么有什么方法可以解封么?当然有了,以下三个方法...

快手广告推广:目标转化出价(oCPM出价)功能介绍

快手广告推广:目标转化出价(oCPM出价)功能介绍

1、功能介绍: Optimized Cost per Mille的缩写,算法优化以转化成本为目标,但是按曝光计费(信息流为封面曝光计费、.上 下滑为素材曝光计费)。采用更及时的调价策略,将广告展现给最容易产生转化的用户,在获取流量的同时,提縞算法预估的准确率。从测试数据来看, 相较于oCPC ,无...

谷歌浏览器隐私设置错误怎么回事(谷歌搜索引擎的正确用法)

谷歌浏览器隐私设置错误怎么回事(谷歌搜索引擎的正确用法)

HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互。这能够帮助防止协议降级攻击和cookie劫持。   HSTS最初是为了响应Moxie Marlinspike在200...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片