在对此进行进一步研究后,我想我理解了这个问题。
当您在 Raphael 中绘制路径时,它是画布上的一个设定位置,当我们执行旋转时,它是该设定位置之上的应用变换。悬停事件被触发,我们应用了缩放变换,它清除了之前的任何变换,这就是对象返回到其原始位置的原因。
我想出的解决方案是当我们执行悬停动画时,我们还需要执行任何当前应用的旋转,并且在旋转时我们需要确保缩放被重置。我还注意到,当旋转发生时,如果你将鼠标悬停在一个块上,会出现一些奇怪的动画,并且可能需要在旋转时禁用悬停。
请参阅 jsFiddle 链接http://jsfiddle.net/ginja/5yp7D/以获取更新的代码,下面我概述了我的更改...
旋转:
blocks.animate({ transform: "r" + stadRotate + " " + stadCX + " " + stadCY + "s1" }, 1000);
鼠标移到:
this.animate({ fill: "#5CBFEB", transform: "r" + stadRotate + " " + stadCX + " " + stadCY + "s1.2" }, 200);
鼠标移出:
this.animate({ fill: "#cc0000", transform: "r" + stadRotate + " " + stadCX + " " + stadCY + "s1" }, 200);
我不确定这是否是正确的方法,但如果有人要添加任何内容或更好的解决方案,请发表评论或回答