【发布时间】:2017-03-31 00:40:11
【问题描述】:
所以我有一个类似这样的 SVG:
<svg>
<g id='leftArm'>
<shapes for upper arm>
<circle id='leftShoulderPivot' />
<g id="leftForearm'>
<shapes for lower arm>
<circle id='leftElbowPivot' />
<circle id='leftWristPivot' />
<g id='leftHand'>
<shapes for left hand>
</g>
</g>
</g>
<g id='torso'>
<shapes>
</g>
</svg>
这允许我使用适当枢轴的 cx 和 cy 值作为旋转原点来旋转手臂、前臂和手组。万岁!
但是,我希望前臂形状在躯干形状下方渲染,而手部形状在躯干形状上方渲染。同样,当您向下旋转手臂时,手会移到躯干后面。
所以我正在寻找两种解决方案之一:
a) 一种改变现有 SVG 渲染顺序的方法,使前臂先渲染,手最后渲染
b) 一种将手组移出手臂组的方法,同时仍保持手组的 x、y 和旋转等于手腕枢轴
理想情况下,我希望在 SVG 中执行此操作,而不是依赖外部 javascript。我可以编写 javascript 来在其他 javascript 移动手臂时固定手的位置,但是我将无法将 SVG 动画用于“空闲动画”循环等。
谢谢!
【问题讨论】:
-
使用多个组并对每个组应用相同的转换。
-
考虑将枢轴向下移动到堆栈中...这样手腕枢轴就在手上。
-
罗伯特,这听起来像是可行的!基本上有一个“后臂”组和一个“前臂”组,中间是躯干,后臂是手臂的实际形状,前臂是手的形状。听起来很完美,谢谢!
-
是的,已实施,运行良好。谢谢!