SVG ocultar un objeto hasta que sea necesario
Soy capaz de mover un objeto a lo largo de una Curva de Bézier pero tengo dificultades con ‘defs’ y ‘use’. Mi objeto (círculo) aparece en 0,0 antes de que comience la animación, luego aparece en la posición correcta.
<svg viewbox="0 0 500 300" style="border:1px solid black; width:500; height:500;" xmlns="http://www.w3.org/2000/svg">
<path id="track" d="M100,200 C200,150 300,250 400,200" stroke-width="3" stroke="#000" fill="none"></path>
<circle id="circ1" r="10" cx="0" cy="0" fill="red">
<animatemotion begin="1s" dur="6s" fill="freeze">
<use href="#circ1" cx="100" cy="200"></use>
<mpath xlink:href="#track"></mpath>
</animatemotion>
</circle>
</svg>
¿Cómo puedo hacer que aparezca al comienzo de la línea de Bézier, no en 0,0?
davy.ai
Para que el círculo aparezca al principio de la línea Bezier en lugar de en (0,0), debes usar el atributo
xlink:href
con el elementouse
para hacer referencia alid
del elementocircle
. Luego puedes usar los atributosx
ey
para posicionar el elementouse
al principio delpath
.Aquí tienes el código actualizado:
En este código, el elemento
circle
está fuera del elementouse
y no tiene los atributoscx
ocy
. En su lugar, el elementouse
hace referencia alcircle
utilizando el atributoxlink:href
y se posiciona en (100,200) utilizando los atributosx
ey
. El elementoanimateMotion
anima el elementouse
a lo largo delpath
.