es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer un bucle en la animación de borde para que parezca una marcha de hormigas en cytoscape.js.

¿Cómo hago para que el borde anime como en marching ant y lo señale hacia el nodo objetivo?

Intenté usar la propiedad line-dash-offset así, pero no hace un bucle.

Estilo:

{
      selector: "edge",
      style: {
        "curve-style": "taxi",
        width: 2,
        "target-arrow-shape": "triangle",
        "target-arrow-color": "#9dbaea",
        "line-style": "dashed",
        "line-dash-pattern": [8, 4],
      }
    }

Animación:

let loopAnimation = eles => {
  eles.animation(
      {
        style: {
          "line-dash-offset": 24,
          "line-dash-pattern": [8, 4],
        }
      },
      {
        duration: 1000
      }
  ).play().promise('complete').then(() => loopAnimation(eles))
};

cy.edges().forEach(loopAnimation);

diagram

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que el borde se anime como en una marcha de hormigas y apuntarlo hacia el nodo objetivo, se puede usar Cytoscape.js y modificar el estilo y la animación del borde. Se puede usar la propiedad curve-style para establecer el estilo de curva del borde, y la propiedad target-arrow-shape para establecer la forma de la flecha en el extremo objetivo del borde. Luego, se puede usar la propiedad line-dash-offset para mover los guiones de la línea, creando un efecto de marcha de hormigas.

    Para apuntar el borde hacia el nodo objetivo, se puede configurar la propiedad target-arrow-shape a "triangle" y la propiedad target-arrow-fill a "filled". Esto creará una flecha rellena al final del borde que apunta hacia el nodo objetivo.

    Para animar el borde, se puede usar la función animation para modificar la propiedad line-dash-offset del estilo del borde con el tiempo. Se puede usar una función recursiva para volver a reproducir continuamente la animación.

    Aquí hay un ejemplo de fragmento de código:

    // establecer el estilo del borde
    cy.style().selector('edge').style({
      'curve-style': 'taxi',
      'width': 2,
      'target-arrow-shape': 'triangle',
      'target-arrow-color': '#9dbaea',
      'target-arrow-fill': 'filled',
      'line-style': 'dashed',
      'line-dash-pattern': [8, 4],
      'line-dash-offset': 0
    }).update();
    
    // animar borde
    function loopAnimation(eles) {
      eles.animation({
        style: {
          'line-dash-offset': '-=8'
        }
      }, {
        duration: 500,
        easing: 'linear'
      }).play().promise('complete').then(() => loopAnimation(eles));
    }
    
    cy.edges().forEach(loopAnimation);
    

    Este código establece el estilo de borde con una línea punteada, una flecha rellena al final objetivo del borde e inicializa la propiedad line-dash-offset en 0. La función loopAnimation anima la propiedad line-dash-offset, restando 8 de su valor cada 500 milisegundos, creando un efecto de marcha de hormigas. La función utiliza una llamada recursiva para reproducir continuamente la animación.

Comments are closed.