html5在Canvas中实现自定义路径动画详解


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

function customizePath(path, func) {

    const pathElement = document.createElementNS('http://www.w3.org/2000/svg',"path");

    pathElement.setAttributeNS(null, 'd', path);

      const length = pathElement.getTotalLength();

    const duration = 1000;

    const interval = length / duration;

    let time = 0, step = 0;

   

      const timer = setInterval(function() {

        if (time <= duration) {

              const x = parseInt(pathElement.getPointAtLength(step).x);

              const y = parseInt(pathElement.getPointAtLength(step).y);

              func(x, y);

              step++;

        } else {

              clearInterval(timer)

        }

     }, interval);

}

 

const path = 'M0,0 C8,33.90861 25.90861,16 48,16 C70.09139,16 88,33.90861 88,56 C88,78.09139 105.90861,92 128,92 C150.09139,92 160,72 160,56 C160,40 148,24 128,24 C108,24 96,40 96,56 C96,72 105.90861,92 128,92 C154,93 168,78 168,56 C168,33.90861 185.90861,16 208,16 C230.09139,16 248,33.90861 248,56 C248,78.09139 230.09139,96 208,96 L48,96 C25.90861,96 8,78.09139 8,56 Z';

const canvas = document.querySelector('canvas');

const context = canvas.getContext('2d');

function move(x, y) {

      context.clearRect(0, 0, canvas.width, canvas.height);

    context.beginPath();

      context.arc(x, y, 25, 0, Math.PI*2, true);

      context.fillStyle = '#f0f';

      context.fill();

      context.closePath();

}

customizePath(path, move);

实现思路大致如上所述,然而这并不是最终成果。当我们决定要在canvas制作自定义路径动画时,我们不仅要考虑如何实现,更要考虑性能优化,比如在这个实现思路中,我们是否可以减少不必要的渲染次数?帧率如何控制达到最优?等等。

虽然它们并不在这篇文章的讨论范围中,当也应当值得我们思考。

以上就是html5在Canvas中实现自定义路径动画详解的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

服务端主动发送数据回客户端在h5里的实现步奏

html5中web是什么?web存储中的元素有哪些?

html5音频与视频问题及解决方法

html5的canvas元素有什么作用?<canvas>的简单使用

html5需遵循怎样的6个设计原则?

h5计算手机摇动次数

实现弹幕效果的方法总结(css和canvas

html5新增标签有哪些?html5中新增的13种标签的简单介绍

使用php和html5 formdata实现无刷新文件上传

html5-web worker apis的代码详解

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...