当前位置:首页 > 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 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是 D…

uniapp模板库

uniapp模板库

uniapp模板库推荐 官方模板库 uni-app官方提供多个模板,涵盖电商、社交、新闻等多个领域。这些模板可直接在HBuilderX中通过新建项目选择,包含基础结构和常用功能模块,适合快速启动项目。…

uniapp设置title

uniapp设置title

设置页面标题的方法 在UniApp中设置页面标题可以通过以下几种方式实现,适用于不同场景和需求。 通过pages.json配置 在pages.json文件中,可以为每个页面单独配置导航栏标题。找到…

uniapp可以用vant吗

uniapp可以用vant吗

uniapp中使用Vant组件库的可行性 Vant是专为Vue.js设计的移动端组件库,而uniapp是一个跨平台开发框架。两者并非原生兼容,但可通过以下方式实现部分Vant组件的使用。 方法一:…

uniapp 美颜

uniapp 美颜

uniapp 美颜实现方法 在uniapp中实现美颜功能可以通过多种方式完成,以下是一些常见的方法: 使用原生插件 uniapp支持调用原生插件实现美颜效果,适用于对性能要求较高的场景。需要开发原…

uniapp悬浮

uniapp悬浮

实现悬浮效果的方法 在UniApp中实现悬浮效果可以通过CSS的position: fixed或position: sticky属性结合动态样式控制来实现。以下是具体实现方式: 使用CSS固定定位…