Rumah  >  Soal Jawab  >  teks badan

Dalam Vue.js, klik butang untuk menjana animasi secara rawak

Saya mempunyai tiga fail animasi json pemain lottie - congratulations1.json, congratulations2.json and congratulations3.json Animasi adalah seperti berikut:

Tahniah 1:

<lottie-player
          v-if="showPlayer1"
          class="justify-content-center"
          src="../../../congratulations.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;

Tahniah 2:

<lottie-player
          v-if="showPlayer2"
          class="justify-content-center"
          src="../../../congratulations2.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;

Tahniah 3:

<lottie-player
          v-if="showPlayer3"
          class="justify-content-center"
          src="../../../congratulations3.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;

Nota: Laluan ke fail json disebut dalam src teg pemain lottie ini.

Saya mahu memaparkan butang individu secara rawak apabila ia diklik.

Perkara yang telah saya lakukan:

Saya menggunakan tiga pembolehubah untuk setiap satu daripada tiga animasi. Pembolehubahnya ialah - showPlayer1, showPlayer2 dan showPlayer3. Saya menyimpannya dalam tatasusunan yang dipanggil showPlayer dan menetapkan nilainya kepada palsu. Saya tidak tahu sama ada program saya betul. Saya tidak tahu apa yang perlu dilakukan seterusnya.

Susunan saya:

<script>
export default {
  data() {
    return {
      showPlayer: [
        (showPlayer1 = false),
        (showPlayer2 = false),
        (showPlayer3 = false),
      ],
    };
  },

Saya telah melakukan ini. Saya tidak tahu apa yang perlu dimasukkan ke dalam label butang untuk memaparkan ketiga-tiga animasi ini secara rawak daripada tatasusunan. tolong bantu.

Kod dikemas kini:

<div class="justify-content-center anim">
        <lottie-player
          v-if="showPlayer === 1"
          class="justify-content-center"
          src="../../../congratulations.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;
      </div>
      <div class="justify-content-center anim">
        <lottie-player
          v-if="showPlayer === 2"
          class="justify-content-center"
          src="../../../congratulations_2.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;
      </div>
      <div class="justify-content-center anim">
        <lottie-player
          v-if="showPlayer === 3"
          class="justify-content-center"
          src="../../../congratulations_3.json"
          background="transparent"
          speed="1"
          style="width: 300px; height: 300px"
          loop
          controls
          autoplay
        ></lottie-player
        >;
      </div>

P粉722521204P粉722521204205 hari yang lalu340

membalas semua(1)saya akan balas

  • P粉156415696

    P粉1564156962024-03-28 22:34:18

    Seperti yang saya tunjukkan di bawah, terdapat pelbagai cara lain untuk mencapai matlamat ini. Tetapi jika anda mahu melakukan apa yang anda cadangkan, saya tidak akan menggunakan showPlayer sebagai tatasusunan boolean, tetapi sebagai nombor.

    
    sssccc

    Terdapat banyak cara untuk menyelesaikan masalah ini. Jika anda hanya mahu menggunakan satu komponen dan menukar sumber, anda boleh melakukan perkara berikut: Mula-mula, tetapkan src komponen sebagai pembolehubah:

    ;

    Sediakan tatasusunan menggunakan rentetan dalam data() seperti ini:

    animations: [
        '../../../congratulations.json',
        '../../../congratulations2.json',
        '../../../congratulations3.json',
      ],
      animationSrc: ''

    Kemudian tetapkan kaedah untuk randomButton seperti ini:

    onRandomButtonPress() {
      this.animationSrc = this.animations[Math.floor(Math.random()*this.animations.length)];
    },

    Saya memecahkan kotak pasir kod dengan cepat: https://codesandbox.io/s/elastic-dijkstra-o7ety?file=/src/components/HelloWorld.vue

    Anda juga boleh menggunakan atribut :is in vue untuk memuatkan komponen dinamik dan menetapkan komponen mana yang hendak dimuatkan dalam kod. https://v2.vuejs.org/v2/guide/components-dynamic async.html

    balas
    0
  • Batalbalas