这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战
SVG(十三)——动画(4)
接上文
(10)动画
(b)fill
-
fill:- 描述:
- 这个属性用于控制动画结束后的状态
- 默认情况下,动画执行结束后的状态是回到SVG形状的起点(非路径的起点)
- 但是某些情况下,我们希望动画结束后,SVG形状就停留在路径的终点
- 因此需要用这个属性来控制这个状态
- 属性值:
remove:默认值,表示动画结束后回到起点位置freeze:表示动画结束后被冻结,即停留在动画结束时的位置
- 代码示例
<circle cx="0" cy="0" r="25"> <animateMotion id="bezier1" dur="3s" begin="1s;bezier2.end" fill="freeze"> <mpath xlink:href="#path1"></mpath> </animateMotion> </circle> <path id="path1" d="M 100 100, Q 150 0 200 100, T 300 100" stroke="red" stroke="red" fill="none" /> - 描述:
(c)accumulate
-
accumulate:-
描述:
- 这个属性用于控制下次动画开始执行时的位置
- 默认情况下,动画执行结束后,SVG图形会再次从路径的起点开始执行
- 但某些情况下,我们是希望SVG图形从上次动画结束时的位置继续执行下一个(下一次)动画的
- 因此需要这个属性
accumulate来改变
-
属性值:
-
none:表示重新开始 -
sum:表示将上次动画结束时的位置作为下次动画的起点位置
注意,这个位置改变的是SVG形状的起点位置
-
而按照之前介绍过的,如果SVG形状的起点位置不是原点
(0,0)出发的 -
那么,其动画路径也会发生相应的偏移
-
<circle cx="0" cy="0" r="25"> <animateMotion id="bezier1" dur="3s" begin="0" accumulate="sum" repeatCount="2"> <mpath xlink:href="#path1"></mpath> </animateMotion> </circle> <path id="path1" d="M 100 100, Q 150 0 200 100, T 300 100" stroke="red" stroke="red" fill="none" />该属性表示将形状的起点位置设置为动画结束时的位置
-
而这里表示将圆心
(cx,cy)设置为(300,100)——即路径的终点 -
在下一次动画开始时,其起点位置发生改变
-
则其动画路径也会在原来的坐标上发生相应的偏移
-
即,X轴上偏移
300,Y轴上偏移100 -
所以SVG形状实际的运动路径是
<path id="path2" d="M 400 200, Q 450 100 500 200, T 600 200" stroke="red" stroke="red" fill="none" />
-