我正在尝试为 SVG 线设置动画,当我在使用 Vivus 对其进行动画处理后尝试修改线的坐标时会出现问题。我的目标是修改线的坐标(例如改变它的大小、位置)然后对其进行动画处理,并多次执行上述过程。
更改 SVG 线的属性的问题
- 创建 Vivus 对象 (new Vivus("win_line_svg", {type: 'oneByOne', duration: 30});)
- 尝试更改 SVG 行的属性(x1,y1,x2,y2)出错(无法读取未定义的属性 'baseVal')
在创建 Vivus 对象之前尝试调整线条的大小会起作用。
您可以在 JSFiddle 中重现该问题:
- 点击播放按钮
- 单击“调整大小”按钮 =>(无法读取未定义的属性“baseVal”)
function play() {
myVivus_Win_Line = new Vivus("win_line_svg", {
type: 'oneByOne',
duration: 30
});
myVivus_Win_Line.play();
}
function resize() {
line = document.getElementById("line");
line.y2.baseVal.value++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vivus/0.4.5/vivus.min.js"></script>
<button onclick="play()">Play</button>
<button onclick="resize()">Resize</button>
<!-- win line -->
<svg style="position: absolute; z-index:0; opacity: 100;" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" id='win_line_svg'>
<line x1="50" y1="0" x2="50" y2="10" style="stroke:black;stroke-width:2" id='line' />
</svg>