抖音资讯

douyinzx

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

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

  • 主要用到的函数也就是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

相关文章

直播代运营合同避坑:报价、KPI、违约金一次说清

直播代运营合同避坑:报价、KPI、违约金一次说清

去年西安一家女装店老板拿着合同来找我看,就一页纸,上面写着“保证月销30万”。签的时候高高兴兴,三个月后只卖了8万,代运营公司一句“市场环境不好”就撒手不管了。老板想退钱,翻出合同才发现,什么叫销售额、含不含退款、考核多久、数据以谁为准,一个字都没写。这种坑我这两年见了不止十回。 直播代运营合同看...

抖音千川投放怎么投?2026新手起量避坑指南

抖音千川投放怎么投?2026新手起量避坑指南

西安一家做本地餐饮的老张,去年底听人说抖音能拉客,先充了3000块投DOU+。一个月下来,视频播放量是上去了,团购券没卖出几张。后来他才搞清楚,DOU+是给内容加热用的,真正能把团购券卖出去的工具叫巨量千川。2026年,在抖音上做生意的商家基本绕不开这两个东西:DOU+管内容热度,千川管成交转化。...

抖音短视频带货怎么做?2026年挂车出单实操指南

抖音短视频带货怎么做?2026年挂车出单实操指南

直播带货要开播、要人设、要话术,很多西安商家试了两次就放弃了。其实还有一条更轻的路:短视频带货。拍一条视频挂上商品链接,用户刷到直接下单,不用开播,不用连麦,一个人一部手机就能跑。我见过高新一家卖手工辣条的档口,老板就拍后厨炒料,一条视频爆了,挂车链接三天卖了四千多单。我自己也帮几个西安客户跑过这...

抖音矩阵号怎么做?2026年企业多账号布局实操

抖音矩阵号怎么做?2026年企业多账号布局实操

有个西安做门窗的老板跟我抱怨,说一个号发了大半年,播放量卡在一两千上不去,问我是不是号被限流了。我让他去搜搜本地同行,人家三个号轮着发,客户搜「西安封阳台」,翻两屏全是那一家。这不是玄学,就是矩阵。说白了,矩阵不是一个号发十遍,也不是开十个号复制粘贴,而是按客户会搜什么、信什么,把账号分工排好。尤...

抖音蹭热点总翻车?2026年商家追热点的正确姿势

抖音蹭热点总翻车?2026年商家追热点的正确姿势

上周有个做建材的老板问我:热搜上那个话题全网都在拍,我是不是也该跟一条?我反问他,拍完这条视频,客户凭什么找你买瓷砖?他愣了半天没答上来。这就是大多数商家蹭热点的真实状态——看见热点就冲,拍完发现除了播放量,什么都没留下。热点不是不能蹭,是大多数人都蹭错了。我盘过自己服务的客户数据:蹭热点视频的平...

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业号蓝V认证,现在几乎成了西安本地商家做抖音的起手式。不管是餐饮、装修、教育还是批发档口,想挂电话、想开团购、想投DOU+,基本都绕不开这一步。这篇文章把2026年最新的蓝V认证流程、要准备的材料、审核容易挂的地方一次讲清楚。蓝V认证到底有什么用?值不值600块蓝V说白了就是抖音给企业主体做的实...

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

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