Существует не вопрос как таковой (его делать то, что я должен верить), так что на самом деле не решение. Но я попытаюсь подчеркнуть, что происходит, и где замешательство. Я думаю, что это происходит потому, что rotate = "auto" и x, y rect берутся как комбинированные преобразования, если вам нравится, когда они оживляют по пути. Если вы измените x, y на 0,0, это выделит это.
Чтобы попытаться сделать это немного яснее, я объединил несколько прямоугольников с разными значениями x, y. Его такой же эффект, как если бы преобразование сочеталось с вращением.
Вы увидите, как выглядит зеленый, наоборот, его дальнейший выход, когда происходит поворот.
http://jsfiddle.net/fcz69/4/ - быстрый пример, чтобы подчеркнуть, что происходит.
Описание элемента анимацииMotion можно найти здесь http://www.w3.org/TR/SVG/animate.html#RotateAttribute его стоит прочитать бит на «поворот» там, но может потребоваться некоторое время, чтобы опустить вокруг него голову, если она не используется для матриц.
<svg width="600" height="600">
<path d="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30" fill="none" stroke="black"/>
<rect x="0" y="0" width="200" height="200"
style="stroke: none; fill: #FFCC33;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
<rect x="-100" y="100" width="200" height="200"
style="stroke: none; fill: #FF0000;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
<rect x="-200" y="200" width="200" height="200"
style="stroke: none; fill: #00FF00;">
<animateMotion
path="M200,200
a-50,-50 0 0,0 0,-30
a-50,-50 0 0,1 0,-30"
begin="0s" dur="3s" repeatCount="indefinite"
rotate="auto"
/>
</rect>
</svg>
Теперь это ясно, спасибо! :) Есть ли способ компенсировать форму, чтобы она была в середине ее, которая проходит по пути? –
Как насчет серого прямоугольника здесь ... http://jsfiddle.net/fcz69/3/ – Ian
вот оно! Спасибо большое! :) –