Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

205
Views
Animando el filtro de luz distante con svg.js

Estoy intentando crear una animación SVG simple usando SVG.js. Mi resultado deseado sería equivalente a:

 <filter"> <feDiffuseLighting result="diffOut" in="SourceGraphic" diffuseConstant="1.2" lighting-color="white"> <feDistantLight azimuth="240" elevation="100"> <animate attributeName="elevation" values="100; 20" dur="7s" /> </feDistantLight> </feDiffuseLighting> <feComposite in="SourceGraphic" in2="diffOut" operator="arithmetic" result="diffPointOut" k1="1" k2="0" k3="0" k4="0" /> </filter>

A partir de ahora pude replicar todo menos la animación usando svg.js y svg.filter.js:

 foreground.filterWith(function (filter) { diff = filter.diffuseLighting().attr({ 'lighting-color': 'white', 'diffuseConstant': 1.2 }); dLight = SVG('<feDistantLight azimuth="240" elevation="100"/>'); diff.add(dLight); filter.composite(filter.source, diff) .attr({ operator: 'arithmetic', k1: 1, k2: 0, k3: 0, k4: 0 }); });

Este fragmento de código genera en el DOM resultante exactamente el mismo filtro sin la animación. Para agregar una animación, he intentado usar:

 dLight.animate(7000, 0, 'now').attr({ "elevation": 20 });

Pero provoca un error al declarar que 'dLight' no tiene una función llamada 'animar'. Si trato de crear mi propio corredor de animación svg.js y le paso dLight, causaría un error similar, declarando que no tiene una función '_prepareRunner'.

Por otro lado, puedo animar cualquier atributo de 'diff': el filtro de luz difusa está bien. Lo que significa que mi problema probablemente se deba a una forma en que solía crear el filtro de luz distante a través del método SVG (...), pero no encontré otro método para crearlo, ya que según la última publicación aquí: https://github.com/ svgdotjs/svg.filter.js/issues/18 svg.filter.js ya no proporciona un constructor.
Estoy buscando ayuda para agregar una animación al resultado de la llamada SVG (...) o crear un filtro de luz distante de una manera animable más adecuada.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

De acuerdo con este comentario , en realidad hay un constructor para un filtro de luz distante (y otros tipos de luz) dentro de la clase de filtro de luz difusa. Cuando se inicializa a través de esos constructores, el filtro de luz distante admite animaciones correctamente. Todo el crédito por esta respuesta es para Fuzzyma .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!