【UniApp】uniapp 实现抽奖幸运大转盘功能
CrazyPanda发表于:2023-12-12 23:37:41浏览:419次
实现抽奖幸运大转盘功能。
效果图:
资源图片:
如果奖品是支持动态的,需要自己重新改一下布局,逻辑不变。
代码:
<template> <view class="relative"> <image :src="require('@/static/newPerson/bj.png')" mode="widthFix" class="" style="width: 100%;"></image> <view class="zhuan flexCenter"> <image :src="require('@/static/newPerson/zhuan.png')" mode="aspectFill" class="zhuanBox" :class="{'rotate':isRotate}" :style="{transform:`rotate(${angle}deg)`}" style="width:470rpx;height:470rpx;"></image> <image :src="require('@/static/newPerson/an.png')" mode="widthFix" @click="rotate()" class="an " style="width:218rpx;height:218rpx;"></image> </view> <!-- <view>1. 注册或未参与过此活动的用户</view> <view>2. 红包奖励直接到用户账号,可以用于商城购物</view> <view>3. 参与活动时,需要分享给好友一起参与</view> --> </view> </template> <script> //生成随机数(下面也有一个) function rand(min, max) { return parseInt(Math.random() * (max - min + 1) + min); } export default { data() { return { isRotate:false,//是否旋转 prizeList:['积分','新人红包','精选好券','谢谢参与','积分','新人红包','惊喜礼包','新人红包'],//奖品列表,决定旋转角度 angle:0,//旋转角度 } }, methods: { rotate(){ if(this.isRotate)return; this.angle=0; setTimeout(()=>{ let len=this.prizeList.length; let num=rand(0,len-1); //随机奖品,可以改成后端返回的。 // let num=7; //随机奖品,可以改成后端返回的。 let prize=this.prizeList[num]; // let angle=360/8*num+rand(0,44);//不排除转到中间线 let angle=360/len*num+rand(4,40);//排除转到中间线 this.angle=(8*360+angle);//旋转圈数8 + 奖品角度 console.log('奖品:',prize,num,angle,this.angle,len) this.isRotate=true; setTimeout(()=>{ this.isRotate=false; uni.showToast({ title:prize, icon:'none', duration:3000 }) },5000) },300) } } } </script> <style> .zhuan{ position:absolute; /* top:50%; */ top:46.5%; left:50%; transform: translate(-50%,-50%); } .zhuanBox{ position: absolute; width: 100%; height: 100%; } .an{ position: relative; /* position:absolute; top:50%; left:50%; transform: translate(-50%,-50%); */ transform: rotate(0deg); } .an:active{ transform: scale(0.95); } .rotate{ /* animation: rotate 5s infinite linear; */ /* animation-timing-function: ease-in-out; */ /* animation-timing-function: cubic-bezier(0.42, 0, 0.58, 0.9); */ /* animation-timing-function: cubic-bezier(0.25,0.1,0.25,1); */ transform: rotate(3800deg); transition: transform 5s ease; } @keyframes rotate { 0%{ transform: rotate(0deg); } 100%{ /* transform: rotate(360deg); */ transform: rotate(3800deg); } } </style>
猜你喜欢
- 【UniApp】最新使用uniapp本地打包APP安卓,已排坑
- uniapp打包IOS!!!1. 生成本地打包资源 2. 下载Android Studio和App离线SDK导航路径:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android下载的Android 离线SDK与本地开发工具版本对应 3. 解压得到的目录如下4. 使用Android Studio打开Android 离线SDK解压目录里面这个文件夹,这个是示例项目,我们只需要更改这个项目的一些配置,其他配置HBuilderX已经配置好了5.
- 【UniApp】uniapp全局方法怎么使用
- uniapp是一款基于Vue.js框架开发的跨平台开发框架,可以通过编写一套代码,同时在iOS、Android、H5等多个平台上运行。在uniapp中,我们可以使用全局方法来方便地进行公共方法的调用。本文将介绍uniapp全局方法的定义和使用。一、定义全局方法在uniapp中定义全局方法需要用到Vue.prototype.$xxxx = function()这个语法,其中xxxx是方法名称。示例代码如下:Vue.prototype.$formatDate = fun
- 【UniApp】利用uniapp实现图片压缩功能
- 利用uniapp实现图片压缩功能随着手机拍照功能的提升,我们在日常生活中经常会拍摄大量的照片。然而,这些高像素的照片占据了手机的存储空间,使手机变得缓慢且容易存满。为了解决这个问题,我们可以利用uniapp中的相关技术,实现图片压缩功能,将图片压缩至更小的文件大小,保留合适的像素和画质。下面我们将详细介绍在uniapp中如何实现图片压缩功能。步骤一:引入相关插件首先,我们需要在uniapp项目中引入相关的插件。最常用的图片压缩插件是uni-image-compress,它基于image
- 【UniApp】Flutter与uniapp哪个更适合移动应用开发需求
- 今天,移动应用开发已成为越来越多企业和个人关注的重点领域。对于开发者来说,选择一种适合自己需求的开发框架至关重要。在众多可选的开发框架中,Flutter和uniapp都是备受关注的两个。本文将比较这两个框架的优缺点,帮助读者选择最适合自己的移动应用开发方案。首先,让我们来了解一下这两个框架。Flutter是由谷歌开发的跨平台移动应用开发框架,其使用Dart语言进行编码。而uniapp是由DCloud开发的跨平台应用框架,其使用了Vue.js作为基础框架。对比Flutter和uniapp,首先要考
- 【UniApp】利用uniapp实现音频播放功能
- 利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为"music.mp3"的音频文件作为示例。首先,我们需要在uniapp的项目中创建一个音频播放页面。在pages文件夹下,新建一个名为"audio"的文件夹,并在该文件
- 【UniApp】如何在uniapp中实现图片上传和预览
- 如何在uniapp中实现图片上传和预览在现代社交网络和电子商务应用中,图片上传和预览功能是非常常见的需求。本文将介绍如何在uniapp中实现图片上传和预览的功能,并给出具体的代码示例。一、图片上传功能的实现在uniapp项目中,首先需要在页面中添加一个图片上传组件,如下所示:<template> <view> <image v-for="(item, in
- 【UniApp】uniapp 定义动画的几种方式
- 本章的前提就是大家都知道动画的基本属性,例如 animation-name、animation-duration、animation-timing-function、animation-delay、animation-iteration-count和animation-direction 属性。了解更多 animation 相关的内容。现在制作一个左右抖动的动画效果,效果如下:在 uniapp 中,可以通过如下两种方式来完成。1. 直接使用 CSS 动画1.1 定义动画@keyframes&nb
- 【UniApp】如何在uniapp中实现滑动解锁和手势操作
- 如何在Uniapp中实现滑动解锁和手势操作导语:随着智能手机的普及,滑动解锁和手势操作已经成为用户使用手机的基本操作之一。在Uniapp开发中,如何实现这类交互功能呢?本文将介绍如何在Uniapp中实现滑动解锁和手势操作,并提供具体的代码示例。一、滑动解锁的实现滑动解锁是一种常见的手机解锁方式,用户需要通过手指在屏幕上滑动,以完成解锁操作。在Uniapp中,我们可以通过touch事件来实现滑动解锁。创建一个滑块组件首先,我们需要创建一个滑块组件,用于表示滑块的位置和状态。在该组件中,我
栏目分类全部>