最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端實(shí)現(xiàn)json動(dòng)畫詳細(xì)過程(附帶示例)

 更新時(shí)間:2025年02月27日 08:55:34   作者:昵稱不能為空吧  
這篇文章主要介紹了如何使用Lottie制作動(dòng)畫,包括創(chuàng)建動(dòng)畫文件.json、實(shí)現(xiàn)效果、在Git倉(cāng)庫(kù)中保存和共享、運(yùn)行動(dòng)畫以及在動(dòng)畫天堂下載和顯示JSON動(dòng)畫,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下

使用lottie制作動(dòng)畫。

1.json動(dòng)畫

 廢話 不多說,直接看效果圖

2.實(shí)現(xiàn)效果

3.git倉(cāng)庫(kù)

https://gitee.com/chaiachai/lottie

4.運(yùn)行

npm install
npm run serve

5.json動(dòng)畫天堂

https://lottiefiles.com/可以下載想要的json動(dòng)畫

顯示json的幀數(shù)詳情

6.代碼

<template>
  <div class="home">
    <div class="wrap" ref="lavContainer" @click="changeAnimal"></div>
    <button v-on:click="change('wink')">wink</button>
    <button v-on:click="change('cry')">哭泣</button>
    <button v-on:click="change('laugh')">大笑</button>
    <button v-on:click="change('rolleyes')">轉(zhuǎn)眼睛</button>
  </div>
</template>

<script>
import lottie from 'lottie-web'
import * as animationData from '@/assets/lottie/AnimationLong.json'
import * as animationData1 from '@/assets/lottie/AnimationDate.json'//json 引入的json可能也會(huì)有問題,json文件下載的過程中丟失了?
export default {
  name: 'app',
  components: {
  },
  data() {
    return {
      anim: null,
      changeFlag: false
    }
  },
  mounted() {
    this.anim = lottie.loadAnimation({
      container: this.$refs.lavContainer,
      renderer: 'svg',
      loop: false,//是否循環(huán)
      autoplay: true,//自動(dòng)播放  倘若只需要一打開頁面就直接播放動(dòng)畫,可以設(shè)置為true。如果動(dòng)畫播放完,需要執(zhí)行其他的操作,可以設(shè)置動(dòng)畫播放多少秒結(jié)束(和制作動(dòng)畫的人配合,他會(huì)告訴你動(dòng)畫多長(zhǎng)時(shí)間,或者在lottie網(wǎng)站下的動(dòng)畫,進(jìn)到編輯頁面可以查看到動(dòng)畫的幀數(shù)時(shí)長(zhǎng)),直接進(jìn)行其他的邏輯。
      animationData: animationData,//這里有的可能會(huì)報(bào)錯(cuò),可以使用require的方式
    }
    )
    this.anim.addEventListener('complete', () => { console.log('animation data has loaded') })//監(jiān)聽動(dòng)畫播放完,進(jìn)行操作
  },
  methods: {
    changeAnimal() {
      this.anim.destroy()
      this.anim = lottie.loadAnimation({
        container: this.$refs.lavContainer,
        renderer: 'svg',
        loop: this.changeFlag ? false : true,
        autoplay: this.changeFlag ? false : true,
        animationData: this.changeFlag ? animationData : animationData1,
      }
      )
      this.changeFlag = !this.changeFlag
    },
    change(type) {
      switch (type) {
        case 'rolleyes':
          this.anim.playSegments([[0, 23], [99, 105]], true)//播放片段  因?yàn)闆]有ui制作的json,所以直接自己假裝構(gòu)建一個(gè)比較自然的動(dòng)畫
          break
        case 'cry':
          this.anim.playSegments([[28, 48], [99, 105]], true)
          break

        case 'laugh':
          this.anim.playSegments([[50, 79], [99, 105]], true)
          break
        case 'wink':
          this.anim.playSegments([80, 100], true)
          break

      }
    }
  }
}
</script>

<style>
.home{
 
}
.wrap{
  width: 200px;
  height: 200px;
  overflow: hidden;
  margin: 0 auto;
}
</style>

7. 經(jīng)常使用的方法

lottie-web提供了很多的控制動(dòng)畫播放的方法,下面是一些常用的方法。

animation.play(); // 播放該動(dòng)畫,從目前停止的幀開始播放

animation.stop(); // 停止播放該動(dòng)畫,回到第0幀

animation.pause(); // 暫停該動(dòng)畫,在當(dāng)前幀停止并保持

animation.goToAndStop(value, isFrame); // 跳到某個(gè)時(shí)刻/幀并停止。isFrame(默認(rèn)false)指示value表示幀還是時(shí)間(毫秒)

animation.goToAndPlay(value, isFrame); // 跳到某個(gè)時(shí)刻/幀并進(jìn)行播放

animation.goToAndStop(30, true); // 跳轉(zhuǎn)到第30幀并停止

animation.goToAndPlay(300); // 跳轉(zhuǎn)到第300毫秒并播放

animation.playSegments(arr, forceFlag); // arr可以包含兩個(gè)數(shù)字或者兩個(gè)數(shù)字組成的數(shù)組,forceFlag表示是否立即強(qiáng)制播放該片段

animation.playSegments([10,20], false); // 播放完之前的片段,播放10-20幀

animation.playSegments([[0,5],[10,18]], true); // 直接播放0-5幀和10-18幀

animation.setSpeed(speed); // 設(shè)置播放速度,speed為1表示正常速度

animation.setDirection(direction); // 設(shè)置播放方向,1表示正向播放,-1表示反向播放

animation.destroy(); // 刪除該動(dòng)畫,移除相應(yīng)的元素標(biāo)簽等。在unmount的時(shí)候,需要調(diào)用該方法

//監(jiān)聽
//eg
 this.anim.addEventListener('complete', () => { console.log('animation data has loaded') })//監(jiān)聽動(dòng)畫播放完,進(jìn)行操作

complete: 播放完成(循環(huán)播放下不會(huì)觸發(fā))

loopComplete: 當(dāng)前循環(huán)下播放(循環(huán)播放/非循環(huán)播放)結(jié)束時(shí)觸發(fā)

enterFrame: 每進(jìn)入一幀就會(huì)觸發(fā),播放時(shí)每一幀都會(huì)觸發(fā)一次,stop方法也會(huì)觸發(fā)

segmentStart: 播放指定片段時(shí)觸發(fā),playSegments、resetSegments等方法剛開始播放指定片段時(shí)會(huì)發(fā)出,如果playSegments播放多個(gè)片段,多個(gè)片段最開始都會(huì)觸發(fā)。

data_ready: 動(dòng)畫json文件加載完畢觸發(fā) * DOMLoaded: 動(dòng)畫相關(guān)的dom已經(jīng)被添加到html后觸發(fā)

destroy: 將在動(dòng)畫刪除時(shí)觸發(fā)

總結(jié) 

到此這篇關(guān)于前端實(shí)現(xiàn)json動(dòng)畫的文章就介紹到這了,更多相關(guān)前端實(shí)現(xiàn)json動(dòng)畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中自動(dòng)插入分號(hào)的規(guī)則詳解

    JavaScript中自動(dòng)插入分號(hào)的規(guī)則詳解

    JavaScript?提供了?automatic?semicolon?insertion?(ASI)自動(dòng)插入分號(hào)規(guī)則,在不加分號(hào)的情況下,會(huì)自動(dòng)補(bǔ)充分號(hào)來分隔不同語句,下面我們就來具體了解一下這一規(guī)則吧
    2024-01-01
  • JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法【測(cè)試可用】

    JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法【測(cè)試可用】

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法,結(jié)合實(shí)例形式詳細(xì)分析了javascript針對(duì)a標(biāo)簽及span標(biāo)簽的正則匹配相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 微信小程序?qū)崿F(xiàn)tab點(diǎn)擊切換

    微信小程序?qū)崿F(xiàn)tab點(diǎn)擊切換

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)tab點(diǎn)擊切換,不滑動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • js實(shí)現(xiàn)(全選)多選按鈕的方法【附實(shí)例】

    js實(shí)現(xiàn)(全選)多選按鈕的方法【附實(shí)例】

    下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)(全選)多選按鈕的方法【附實(shí)例】。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-03-03
  • Emberjs 通過 axios 下載文件的方法

    Emberjs 通過 axios 下載文件的方法

    這篇文章主要介紹了Emberjs 通過 axios 下載文件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • JS中比較冷門但非常好用的方法總結(jié)

    JS中比較冷門但非常好用的方法總結(jié)

    在Js中有一些比較冷門但是非常好用的方法,我在這里稱之為高級(jí)方法,這些方法沒有被廣泛使用或多或少是因?yàn)榇嬖谝恍┘嫒菪缘膯栴},不是所有的瀏覽器都讀得懂的,這篇文章主要就是對(duì)這些方法做一個(gè)總結(jié),讓我們一起來看一下吧
    2023-06-06
  • JavaScript實(shí)現(xiàn)帶標(biāo)題的圖片輪播特效

    JavaScript實(shí)現(xiàn)帶標(biāo)題的圖片輪播特效

    這里給大家分享的是4屏帶標(biāo)題和文字描述的js圖片輪播代碼,完美兼容IE6。圖片滾動(dòng)切換,鼠標(biāo)放到數(shù)字選項(xiàng)卡即可切換圖片。點(diǎn)擊圖片跳轉(zhuǎn)到指定頁面,有需要的小伙伴可以參考下。
    2015-05-05
  • 使用JavaScript實(shí)現(xiàn)鏈表的數(shù)據(jù)結(jié)構(gòu)的代碼

    使用JavaScript實(shí)現(xiàn)鏈表的數(shù)據(jù)結(jié)構(gòu)的代碼

    鏈表(Linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的指針(Pointer) 。下面我們用 JavaScript 代碼對(duì)鏈表的數(shù)據(jù)結(jié)構(gòu)進(jìn)行實(shí)現(xiàn)
    2017-08-08
  • 可以用來搜索當(dāng)前頁面內(nèi)容的js代碼

    可以用來搜索當(dāng)前頁面內(nèi)容的js代碼

    搜索頁面內(nèi)容的js代碼,不過這效率不是很高,大篇幅內(nèi)容不建議使用。
    2009-12-12
  • JavaScript 嚴(yán)格模式(use strict)用法實(shí)例分析

    JavaScript 嚴(yán)格模式(use strict)用法實(shí)例分析

    這篇文章主要介紹了JavaScript 嚴(yán)格模式(use strict)用法,結(jié)合實(shí)例形式分析了JavaScript 嚴(yán)格模式的基本功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03

最新評(píng)論

玉屏| 东台市| 苍溪县| 乌兰察布市| 扎兰屯市| 兴业县| 哈密市| 叶城县| 肥西县| 桑日县| 云龙县| 宜兰县| 汪清县| 江都市| 封丘县| 昭平县| 马山县| 景泰县| 黔东| 深泽县| 淮安市| 乌什县| 平利县| 噶尔县| 长武县| 资阳市| 临沭县| 天门市| 石城县| 军事| 大足县| 鄄城县| 尚志市| 弥勒县| 沾化县| 汪清县| 翁源县| 赞皇县| 福建省| 响水县| 湖北省|