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.

El cargador de Lottie no funciona al cargar un objeto/cadena JSON en el atributo src.

Estoy utilizando el reproductor de Lottie integrado con lottie-interactivity en mi proyecto de Vue.js. Me encontré con un problema que no puedo resolver. Cuando paso un enlace a un archivo .json al reproductor de Lottie, la animación se carga correctamente, mientras que si intento pasar directamente la cadena/objeto json, no parece cargar. Cualquier ayuda con esto sería apreciada.

Este es mi código:

<template>
<lottie-player :id="'lottie.id'" :class="'lottie.class'" :ref="'lottie.id'" :src="'lottie.file'">
</lottie-player>
</template>
<script>
import "@lottiefiles/lottie-player";
import { create } from '@lottiefiles/lottie-interactivity';

export default {
  name: 'LottieAnimation',
  props:{
    lottie: {
        type: Object
    }
  },
  mounted(){
    console.log(this.lottie.file)
    this.$refs[this.lottie.id].addEventListener('load', () => {
        create({
            mode: this.lottie.mode,
            player: '#' + this.lottie.id,
            container: this.lottie.container,
            actions: this.lottie.actions
        });
    })
  }
}
</script>
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con la forma en que el reproductor de Lottie espera que se pase los datos. Al pasar un enlace a un archivo .json, el reproductor puede obtener los datos y analizarlos correctamente. Sin embargo, al pasar una cadena de texto u objeto JSON directamente, es posible que el reproductor no pueda leerlo correctamente.

    Una solución sería utilizar un objeto JavaScript en lugar de una cadena o archivo JSON. Esto se puede lograr importando el archivo JSON y asignándolo a una variable, de la siguiente manera:

    import animationData from './animation.json';
    
    // ...
    
    <lottie-player :src="animationData"></lottie-player>
    

    Otra solución sería convertir la cadena de texto JSON a un objeto JavaScript utilizando JSON.parse(), de la siguiente manera:

    const animationData = JSON.parse(this.lottie.file);
    
    // ...
    
    <lottie-player :src="animationData"></lottie-player>
    

    De cualquier manera, asegúrese de que los datos pasados al reproductor de Lottie sean un objeto JavaScript y no una cadena de texto JSON.

Comments are closed.