美文网首页
uniapp的动画运用(三)自定义帧动画《掷骰子》

uniapp的动画运用(三)自定义帧动画《掷骰子》

作者: 周星星的学习笔记 | 来源:发表于2022-03-19 10:46 被阅读0次

我们都知道,动画其实是由一帧一帧图片组成,快递地播放一组图片就形成了动画,下面演示一下如何简单地自定义一个动画,如图示例。

掷骰子

一、素材准备

(1)6张点数图以及4张骰子旋转过程中的图

素材

二、代码实现

<template>
  <!-- 骰子组件 -->
  <view class="dice-wrap" @tap="throwDice">
    <!-- 筛子运动时候的展示的图片 -->
    <image
      v-if="isDicing"
      :src="diceAnimationImages[aniIndex]"
      class="dice-icon"
    ></image>
    <!-- 筛子运动时候的展示的图片 -->

    <!-- 筛子静止时候的显示的对应点数的图片 -->
    <image v-else :src="diceImages[currentPoint]" class="dice-icon"></image>
    <!-- 筛子静止时候的显示的对应点数的图片 -->
  </view>
  <!-- 骰子组件 -->
</template>

<script>

export default {
  data() {
    return {
      //是否正在掷筛子
      isDicing: false,
      //当前显示的动画图片索引
      aniIndex: 0,
      //掷筛子动画所用到的图片(4张骰子旋转过程中的图)
      diceAnimationImages: [
        this.$cnf.resDomains.image + '/1/20102/2022/0223/6215d51592c61i9u.png',
        this.$cnf.resDomains.image + '/1/20102/2022/0223/6215d515782134if.png',
        this.$cnf.resDomains.image + '/1/20102/2022/0223/6215d51549c1fc8n.png',
        this.$cnf.resDomains.image + '/1/20102/2022/0223/6215d515b47db11a.png'
      ],
      //骰子每一个点的对应的图片
      diceImages: {
        //1点的图片
        1:
          this.$cnf.resDomains.image +
          '/1/20102/2022/0223/6215d51475ea3h0m.png',
        //2点的图片
        2:
          this.$cnf.resDomains.image +
          '/1/20102/2022/0223/6215d5147abedog7.png',
        //3点的图片
        3:
          this.$cnf.resDomains.image +
          '/1/20102/2022/0223/6215d51476185wl8.png',
        //4点的图片
        4:
          this.$cnf.resDomains.image +
          '/1/20102/2022/0223/6215d51478aa2dd3.png',
        //5点的图片
        5:
          this.$cnf.resDomains.image +
          '/1/20102/2022/0223/6215d5147a935fu2.png',
        //6点的图片
        6:
          this.$cnf.resDomains.image + '/1/20102/2022/0223/6215d514764cfg82.png'
      },
      //当前掷筛子掷到的点数(默认1点)
      currentPoint: 1,
      //定时器
      timer: null,
    }
  },
  beforeDestroy() {
    //组件销毁之前清除定时器
    clearInterval(this.timer)
  },
  methods: {
    //掷骰子
    async throwDice() {
      //如果当前骰子正在滚动则不能掷骰子
      if (this.isDicing) {
        return
      }
      //从1~6随机一个数
      this.currentPoint = Math.floor(Math.random() * 6 + 1)
      //开启骰子动画
      await this.startAnimation()
      //动画完毕之后可以通知父组件当前掷到的点数
      this.$emit('ok', this.currentPoint)
    },
    //开启动画效果
    async startAnimation() {
      return new Promise((resolve) => {
        //设置筛子开始运动
        this.isDicing = true
        //记录动画次数
        let num = 0
        //每隔200毫秒来回切换一张“动”图形成掷骰子的动画
        this.timer = setInterval(() => {
          let index = this.aniIndex
          index++
          if (index >= this.diceAnimationImages.length) {
            index = 0
          }
          this.aniIndex = index
          num++
          //差不多执行1.6秒钟的时候可以停止了
          if (num > 8) {
            //关闭定时器
            clearInterval(this.timer)
            //设置骰子停止
            this.isDicing = false
            //返回结果
            resolve(true)
          }
        }, 200)
      })
    },
  }
}
</script>

<style lang="scss">
.dice-wrap {
  .dice-icon {
    width: 172rpx;
    height: 172rpx;
  }
}
</style>

三、素材下载

1点.png
2点.png
3点.png
4点.png
5点.png
6点.png
动A.png
动B.png
动C.png
动D.png

相关文章

  • uniapp的动画运用(三)自定义帧动画《掷骰子》

    我们都知道,动画其实是由一帧一帧图片组成,快递地播放一组图片就形成了动画,下面演示一下如何简单地自定义一个动画,如...

  • 抛物动画

    此动画在于运用 CAKeyframeAnimation 关键帧动画,以及贝塞尔关键帧动画 - (void)thro...

  • 动画深入研究

    前言 分类 View动画,帧动画,自定义View动画,属性动画 View动画 平移,缩放,旋转,透明Transla...

  • IOS动画的使用

    在iOS的开发中主要用到下面几种动画:UIView动画,核心动画,帧动画,自定义转场动画。1:UIView动画UI...

  • Android 动画

    android动画分为三种 帧动画,视图动画(补间动画),属性动画逐帧动画 视图动画 属性动画 Window和A...

  • Android动画详解(一)补间动画

    一、概述 Android中常用到的动画有三种,分别是:帧动画、补间动画和属性动画。 1、帧(Frame)动画 帧动...

  • Android 动画

    Android中动画分为三种: 逐帧动画 补间动画 属性动画 逐帧动画 逐帧动画类似于gif或是电影的原理,通过将...

  • 安卓中基本的动画总结

    安卓有三种基本的动画: 1.帧动画2.补间动画3.属性动画(安卓3.0以后加入) 帧动画 帧动画是在drawabl...

  • Android动画深入分析

    Android的动画可以分为三种:View动画、帧动画和属性动画。(其实帧动画也可以算属于View动画,只是表现形...

  • iOS 动画

    在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...

网友评论

      本文标题:uniapp的动画运用(三)自定义帧动画《掷骰子》

      本文链接:https://www.haomeiwen.com/subject/qzxpdrtx.html