当前位置:首页 > uni-app

uniapp 摇骰子

2026-01-14 18:25:04uni-app

uniapp 摇骰子实现方法

页面布局

pages 目录下创建骰子页面(如 dice.vue),使用 viewimage 组件构建骰子界面。骰子图片可通过静态资源或网络地址加载。

uniapp 摇骰子

<template>
  <view class="dice-container">
    <image :src="diceImage" class="dice" @click="rollDice"></image>
    <text class="result">当前点数: {{ currentValue }}</text>
  </view>
</template>

骰子动画逻辑

通过 CSS 旋转动画模拟骰子摇晃效果,结合 JavaScript 随机数生成点数。

uniapp 摇骰子

<script>
export default {
  data() {
    return {
      diceImage: '/static/dice1.png', // 初始骰子图
      currentValue: 1,
      isRolling: false
    }
  },
  methods: {
    rollDice() {
      if (this.isRolling) return;
      this.isRolling = true;

      // 动画持续时间(毫秒)
      const duration = 1000;
      const startTime = Date.now();

      // 动画帧更新
      const animate = () => {
        const elapsed = Date.now() - startTime;
        if (elapsed < duration) {
          // 快速切换骰子图片产生旋转效果
          const randomValue = Math.floor(Math.random() * 6) + 1;
          this.diceImage = `/static/dice${randomValue}.png`;
          requestAnimationFrame(animate);
        } else {
          // 动画结束,确定最终点数
          const finalValue = Math.floor(Math.random() * 6) + 1;
          this.currentValue = finalValue;
          this.diceImage = `/static/dice${finalValue}.png`;
          this.isRolling = false;
        }
      };

      animate();
    }
  }
}
</script>

CSS 样式

添加骰子旋转动画和基本样式:

<style>
.dice-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
}

.dice {
  width: 200rpx;
  height: 200rpx;
  transition: transform 0.2s;
}

.dice:active {
  transform: rotate(180deg);
}

.result {
  margin-top: 40rpx;
  font-size: 32rpx;
}
</style>

优化建议

  1. 预加载图片:在 onLoad 生命周期中预加载所有骰子图片,避免动画卡顿。
  2. 震动反馈:调用 uni.vibrate() 增强交互体验。
  3. 音效:添加摇晃和停止音效。
  4. 3D 效果:使用 CSS 3D 变换实现更逼真的旋转。

完整资源准备

需准备 6 张骰子面图片(dice1.png 到 dice6.png),存放在 static 目录下。图片建议使用透明背景 PNG 格式,尺寸保持一致。

标签: 骰子uniapp
分享给朋友:

相关文章

uniapp开发

uniapp开发

uniapp开发简介 uniapp是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp 极光推送

uniapp 极光推送

uniapp 集成极光推送的方法 在 uniapp 中集成极光推送,需要使用官方提供的插件或自行封装原生模块。以下是具体实现方式: 使用官方插件 在 uni-app 插件市场搜索「极光推送」插件,…

uniapp如何赋值

uniapp如何赋值

uniapp 赋值方法 在 uniapp 中,赋值操作可以通过多种方式实现,具体取决于数据类型和场景。 数据绑定赋值 在模板中使用 {{}} 进行数据绑定,通过修改 data 中的值实现动态更新。…

uniapp关闭广告

uniapp关闭广告

关闭广告的方法 在UniApp中关闭广告通常涉及以下几个方法,具体操作取决于广告的类型和集成方式。 移除广告模块 检查项目中是否集成了广告SDK或相关组件,如ad、ad-draw等。在pages.j…

uniapp打卡日期

uniapp打卡日期

实现打卡日期的基本方法 在UniApp中实现打卡日期功能,可以通过<calendar>组件或自定义日期选择器完成。官方推荐使用第三方日历组件如uni-calendar,需通过HBuilde…

uniapp学习书籍

uniapp学习书籍

推荐书籍 《uni-app跨平台开发与应用从入门到实践》:该书详细介绍了uni-app的基础知识和开发技巧,适合初学者和进阶开发者。内容涵盖uni-app的组件、API、路由、状态管理等核心概念,并通…