canvas实现扫描动画

1、扫描效果

        

2、技术选型

    1) CSS3 使用两个元素,通过移动遮罩元素来实现圆面积变小(圆使用border-radius:50%可以实现)

            问题:通过这个遮罩元素实现圆面积变化,无法实现透明,会遮住底部背景

    2) canvas绘制动画,通过使用requestAnimationFrame绘制动画

            问题: a.圆面积会变化 b.横线的长度变化 c.性能问题

    总结:技术1(CSS3)实现动画,其遮住背景,暂时无解决方案,所以选择canvas进行绘制

3、开发实现

    1)圆面积变化

           实现: 绘制一个圆,使用clearRect方法擦除变化面积,可以实现圆面积变化

    2)线条长度变化

            实现:如果实现使用计算得到线条长度变化值,来绘制一根线条,这样的计算太复杂,所以我使用clip裁剪,

绘制一个线条,只展示与圆重叠部分,这样可以实现线条长度变化

    3)性能使用requestAnimationFrame方法绘制动画,不停的调研canvasAPI会导致canvas绘制越来越慢,性能解决这块使用

离屏canvas(此处不做赘述,后有详解)

4、代码实现



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值