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中实现自定义路径动画详解的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

html5几种在客户端存储数据的实例详解

页面性能优化的方法总结

html5 canvas标签是什么意思?canvas标签使用方法介绍

html与html5有什么区别

html5如何解决margin-top的塌陷问题(附代码)

用js+html5实现的小游戏-- 捕鱼达人游戏

html5实现留言和回复的页面

一个完整的html对象是什么样的,如何生成?

html5中设置或返回浏览器应当显示标准的音视频控件的属性controls

html5 datalist标签的用法是什么?这里有datalist标签的用法实例

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




打赏

取消

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

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

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

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

评论

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