当前位置: 首页 > news >正文

uniApp 中实现一个骰子动效

代码如下

<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: ['https://www.upupo.cn/img/骰子素材/动1.png','https://www.upupo.cn/img/骰子素材/动2.png','https://www.upupo.cn/img/骰子素材/动3.png','https://www.upupo.cn/img/骰子素材/动4.png'],//骰子每一个点的对应的图片diceImages: {//1点的图片1: 'https://www.upupo.cn/img/骰子素材/1点.png',//2点的图片2: 'https://www.upupo.cn/img/骰子素材/2点.png',//3点的图片3: 'https://www.upupo.cn/img/骰子素材/3点.png',//4点的图片4: 'https://www.upupo.cn/img/骰子素材/4点.png',//5点的图片5: 'https://www.upupo.cn/img/骰子素材/5点.png',//6点的图片6: 'https://www.upupo.cn/img/骰子素材/6点.png'},//当前掷筛子掷到的点数(默认1点)currentPoint: 1,//定时器timer: null,}},beforeDestroy() {//组件销毁之前清除定时器clearInterval(this.timer);},methods: {async getDicePoint() {let point = 1;//从1~6随机一个数point = Math.floor(Math.random() * 6 + 1);return point;},//掷骰子async throwDice() {//如果当前骰子正在滚动则不能掷骰子if (this.isDicing) {return}//从接口获取点数this.currentPoint = await this.getDicePoint();//开启骰子动画await this.startAnimation();//动画完毕之后可以通知父组件当前掷到的点数this.$emit('throwEnd', this.currentPoint);},//开启动画效果async startAnimation() {return new Promise((resolve) => {//设置筛子开始运动this.isDicing = true;//记录动画次数let num = 0;//每隔100毫秒来回切换一张“动”图形成掷骰子的动画this.timer = setInterval(() => {let index = this.aniIndex;index++;if (index >= this.diceAnimationImages.length) {index = 0;}this.aniIndex = index;num++;//差不多执行1.2秒钟的时候可以停止了if (num > 12) {//关闭定时器clearInterval(this.timer);//设置骰子停止this.isDicing = false;//返回结果resolve(true);}}, 100);})},}}
</script><style lang="scss">.dice-wrap {width: 172rpx;height: 172rpx;.dice-icon {width: 172rpx;height: 172rpx;}}
</style>

素材地址:https://download.csdn.net/download/yueye_wu/88621174

ps:素材免费下载哦

相关文章:

  • 超越MJ:PixArt-α超低成本,高质量文生图创新模型
  • C++ 常函数 常对象 const
  • html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子
  • 定时器TIM HAL库+cubeMX(上)
  • PaddleClas学习3——使用PPLCNet模型对车辆朝向进行识别(c++)
  • 安装LLaMA-Factory微调chatglm3,修改自我认知
  • 奥比中光 Femto Bolt相机ROS配置
  • strtok()的用法及实现哦
  • 逻辑回归的介绍和应用
  • es模板和索引简单操作简介
  • rust宏(macro)详解
  • Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(一)
  • Sui承诺向流动性质押协议投入$SUI
  • TimescaleDB-1 安装
  • 3D渲染和动画制作软件KeyShot Pro mac附加功能
  • 2017 前端面试准备 - 收藏集 - 掘金
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java教程_软件开发基础
  • Python 反序列化安全问题(二)
  • Vim 折腾记
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 记录:CentOS7.2配置LNMP环境记录
  • 蓝海存储开关机注意事项总结
  • 离散点最小(凸)包围边界查找
  • 理清楚Vue的结构
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • (1) caustics\
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (分布式缓存)Redis持久化
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (十)c52学习之旅-定时器实验
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *** 2003
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net - 类的介绍
  • .Net 4.0并行库实用性演练
  • .NET 分布式技术比较
  • .net 受管制代码
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET和.COM和.CN域名区别
  • .sys文件乱码_python vscode输出乱码
  • ;号自动换行
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [Android]Android开发入门之HelloWorld
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?