您的当前位置:首页>全部文章>文章详情

【UniApp】uniapp 实现抽奖幸运大转盘功能

CrazyPanda发表于:2023-12-12 23:37:41浏览:419次TAG:

实现抽奖幸运大转盘功能。

效果图:

资源图片:

1.png

 如果奖品是支持动态的,需要自己重新改一下布局,逻辑不变。

代码:

<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.
发表于:2023-12-21 浏览:349 TAG:
【UniApp】uniapp全局方法怎么使用
uniapp是一款基于Vue.js框架开发的跨平台开发框架,可以通过编写一套代码,同时在iOS、Android、H5等多个平台上运行。在uniapp中,我们可以使用全局方法来方便地进行公共方法的调用。本文将介绍uniapp全局方法的定义和使用。一、定义全局方法在uniapp中定义全局方法需要用到Vue.prototype.$xxxx = function()这个语法,其中xxxx是方法名称。示例代码如下:Vue.prototype.$formatDate&nbsp;=&nbsp;fun
发表于:2023-12-16 浏览:354 TAG:
【UniApp】利用uniapp实现图片压缩功能
利用uniapp实现图片压缩功能随着手机拍照功能的提升,我们在日常生活中经常会拍摄大量的照片。然而,这些高像素的照片占据了手机的存储空间,使手机变得缓慢且容易存满。为了解决这个问题,我们可以利用uniapp中的相关技术,实现图片压缩功能,将图片压缩至更小的文件大小,保留合适的像素和画质。下面我们将详细介绍在uniapp中如何实现图片压缩功能。步骤一:引入相关插件首先,我们需要在uniapp项目中引入相关的插件。最常用的图片压缩插件是uni-image-compress,它基于image
发表于:2023-12-09 浏览:441 TAG:
【UniApp】Flutter与uniapp哪个更适合移动应用开发需求
今天,移动应用开发已成为越来越多企业和个人关注的重点领域。对于开发者来说,选择一种适合自己需求的开发框架至关重要。在众多可选的开发框架中,Flutter和uniapp都是备受关注的两个。本文将比较这两个框架的优缺点,帮助读者选择最适合自己的移动应用开发方案。首先,让我们来了解一下这两个框架。Flutter是由谷歌开发的跨平台移动应用开发框架,其使用Dart语言进行编码。而uniapp是由DCloud开发的跨平台应用框架,其使用了Vue.js作为基础框架。对比Flutter和uniapp,首先要考
发表于:2024-03-31 浏览:284 TAG:
【UniApp】利用uniapp实现音频播放功能
利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为&quot;music.mp3&quot;的音频文件作为示例。首先,我们需要在uniapp的项目中创建一个音频播放页面。在pages文件夹下,新建一个名为&quot;audio&quot;的文件夹,并在该文件
发表于:2023-12-09 浏览:643 TAG:
【UniApp】如何在uniapp中实现图片上传和预览
如何在uniapp中实现图片上传和预览在现代社交网络和电子商务应用中,图片上传和预览功能是非常常见的需求。本文将介绍如何在uniapp中实现图片上传和预览的功能,并给出具体的代码示例。一、图片上传功能的实现在uniapp项目中,首先需要在页面中添加一个图片上传组件,如下所示:&lt;template&gt; &nbsp;&nbsp;&lt;view&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;image&nbsp;v-for=&quot;(item,&nbsp;in
发表于:2023-12-11 浏览:416 TAG:
【UniApp】uniapp 定义动画的几种方式
本章的前提就是大家都知道动画的基本属性,例如 animation-name、animation-duration、animation-timing-function、animation-delay、animation-iteration-count和animation-direction 属性。了解更多 animation 相关的内容。现在制作一个左右抖动的动画效果,效果如下:在 uniapp 中,可以通过如下两种方式来完成。1. 直接使用 CSS 动画1.1 定义动画@keyframes&amp;nb
发表于:2023-12-12 浏览:313 TAG:
【UniApp】如何在uniapp中实现滑动解锁和手势操作
如何在Uniapp中实现滑动解锁和手势操作导语:随着智能手机的普及,滑动解锁和手势操作已经成为用户使用手机的基本操作之一。在Uniapp开发中,如何实现这类交互功能呢?本文将介绍如何在Uniapp中实现滑动解锁和手势操作,并提供具体的代码示例。一、滑动解锁的实现滑动解锁是一种常见的手机解锁方式,用户需要通过手指在屏幕上滑动,以完成解锁操作。在Uniapp中,我们可以通过touch事件来实现滑动解锁。创建一个滑块组件首先,我们需要创建一个滑块组件,用于表示滑块的位置和状态。在该组件中,我
发表于:2023-12-24 浏览:324 TAG:
【UniApp】uniapp App端 实现pdf文件预览
一、下载pdf预览需要用到的相关文件(即hybrid文件夹)微信关注公众号【海贼王部落】,回复【uniapp】,获取网盘下载链接。二、将步骤一下载解压得到的hybrid文件夹放在/src目录下,即 /src/hybrid三、预览pdf1、预览pdf需要用到uniapp的webview组件,所以注册并创建一个专门用于预览pdf的页面,页面使用webview组件。/pages/webview/index.vue:&lt;template&gt;&lt;view&nbsp;style=&quot;wi
发表于:2023-12-08 浏览:340 TAG:
【UniApp】uniapp怎么判断是否安装微信
随着移动互联网的发展,微信已经成为了国内用户相对来说最为普及和使用最为广泛的社交工具。对于一些涉及到微信相关功能的应用程序开发者来说,需要在程序中加入判断用户是否已经安装了微信应用,以便在用户没有安装微信的情况下给出相应的提示或选择其他途径实现相关功能。在uniapp开发中,我们可以使用uniapp自带的uni.getProvider()函数来判断当前设备是否安装了某个提供商的应用程序。而微信作为目前国内使用最为广泛的社交工具之一,这里我们主要介绍如何使用uni.getProvider
发表于:2023-12-17 浏览:383 TAG: