包装信息
"@svgdotjs/svg.js": "^3.0.16",
"svg.easing.js": "svgdotjs/svg.easing.js"
问题
有人可以澄清如何使用 svg.js v3 库通过缓动函数正确地为旋转设置动画吗?
https://svgjs.dev/docs/3.0/animating/中的文档没有给出示例,我尝试了许多不同的方法来让它工作,但所有尝试都会导致默认行为,'>'(又名轻松-out 函数)。插件文档也不冗长(https://svgjs.dev/docs/3.0/plugins/),并且没有提供如何使用插件(例如 svg.easing.js 库)的指导。安装该软件包也不会改变结果。
我的尝试
const mySvg = SVG(<svg>...</svg>)
const rotatable = mySvg.find('#rotatable');
rotatable.animate(3000, '<>').rotate(360);
rotatable.animate(3000, 'easeInOut').rotate(360);
rotatable.animate({ duration: 3000, ease: '<>').rotate(360);
rotatable.animate({ duration: 3000, ease: 'easeInOut').rotate(360);
// Defining an actual easing function for easeInOut
rotatable.animate({ duration: 3000, ease: function(pos) { return (-Math.cos(pos * Math.PI) / 2) + 0.5; }}).rotate(360);
// Providing the function as a string, since that's what `animate` seems to expect
rotatable.animate({ duration: 3000, ease: 'function(pos) { return (-Math.cos(pos * Math.PI) / 2) + 0.5; }'}).rotate(360);
以上都没有按预期工作。我已经在 a <g>
and<path>
元素上使用了这些,并且两者都导致了相同的行为,只是缓出(而不是缓入和缓出 - 甚至只是缓入)。
任何帮助都非常感谢,因为这个库的使用肯定对所有其他方面都非常有帮助!