当前位置:首页 > 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中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp切片

uniapp切片

uniapp 切片实现方法 在 uniapp 中实现切片功能通常指的是对图片或数据进行分割处理。以下是几种常见的切片实现方式: 图片切片展示 通过 CSS 和 JavaScript 实现图片的网格化…

uniapp特性

uniapp特性

uniapp的核心特性 跨平台开发 uniapp支持一套代码编译到多个平台,包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序等。开发者无需为不同平台单独编写代码。…

uniapp斑马

uniapp斑马

uniapp 斑马相关问题解答 uniapp 斑马打印机连接与使用 uniapp 支持通过蓝牙或网络连接斑马打印机,需要借助原生插件或第三方 SDK。以下为常见方法: 蓝牙连接方式 安装 uni-…

uniapp商场

uniapp商场

uniapp 商城开发指南 开发环境搭建 安装HBuilderX作为开发工具,确保已安装Node.js和npm。创建uniapp项目时选择模板,推荐使用官方提供的商城模板或插件市场中的商城模板。 页…