当前位置:首页 > 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 随机数生成点数。

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

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

uniapp 推送

uniapp 推送

uniapp 推送实现方法 uniapp 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是 D…

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的跨…

uniapp倒计时

uniapp倒计时

uniapp倒计时的实现方法 在uniapp中实现倒计时功能可以通过多种方式完成,以下是几种常见的实现方法: 使用setInterval实现基础倒计时 通过JavaScript的setInterva…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…