2014-12-28 4 views
1

У меня есть этот путь: SVGКак анимировать изменения длины пути (линии) с маркерами в SVG

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width='500' height='500'> 
<defs id="def"> 
<marker orient="auto" refY="0.0" refX="-3" id="Arrow2Mend" style="overflow:visible;"> 
    <path id="path3900" style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" d="M -15 -5 L 0 0 L -15 5 z" transform="scale(0.5)"></path> 
</marker> 
</defs> 
<path style="fill:none;stroke:#000000;stroke-width:2.58384609;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker-end:url(#Arrow2Mend)" d="m 189,100.09448 200,0" id="arrowline"></path></svg> 

Я хочу, чтобы иметь возможность увеличивать и уменьшать длину «#arrowline» пути, с анимации, сохраняя стрелку также в нужном месте во время анимации. Я пробовал различные методы, но они были слишком сложными для реализации или не работали. Наверное, я чего-то не хватает. Любая помощь оценивается. Спасибо.

ответ

3

Я не знаю, что вы подразумеваете под «правильным» - вы имеете в виду следующее?

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width='500px' height='500px'> 
 
<defs id="def"> 
 
<marker orient="auto" refY="0.0" refX="-3" id="Arrow2Mend" style="overflow:visible;"> 
 
    <path id="path3900" style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" d="M -15 -5 L 0 0 L -15 5 z" transform="scale(0.5)"></path> 
 
</marker> 
 
</defs> 
 

 
<path style="fill:none;stroke:#000000;stroke-width:2.58384609;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker-end:url(#Arrow2Mend)" d="m 10 10 l200,0" id="arrowline"> 
 
    
 
<animate attributeName="d" from="m 10 10 l200,0" to="m 10 10 l400,0" dur="1s" repeatCount="indefinite"/> 
 
    
 
</path> 
 

 
    </svg>

+0

Да, это то, что я искал! Спасибо! Так элегантно! –

Смежные вопросы