微信小程序wxss制作扭蛋机

小程序制作扭蛋机

2019-09-24 13:26:53

公司要制作活动小程序,其中有一个扭蛋机的效果实现抽奖的功能。在网上找了好久竟没有找到(不知道是不是我找代码的方式有问题)。最后还是自己做一个吧- _ - ,效果如下:

1.wxml

当然我这里没有用wx:for遍历

  <!-- 扭蛋机 -->
  <view class="egg">
    <image class="egg_ji" src="{{imgUrl}}small_program/game/game_luck_draw_nd.png" mode="widthFix"></image>
    <image class="play {{start?‘go‘:‘‘}}" bindtap="eggPlay" src="{{imgUrl}}small_program/game/game_luck_draw_eggplay.png" mode="widthFix"></image>
    <image class="ball ball_1 {{start?‘weiyi_1‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg1.png" mode="widthFix"></image>
    <image class="ball ball_2 {{start?‘weiyi_2‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg2.png" mode="widthFix"></image>
    <image class="ball ball_3 {{start?‘weiyi_3‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg3.png" mode="widthFix"></image>
    <image class="ball ball_4 {{start?‘weiyi_4‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg4.png" mode="widthFix"></image>
    <image class="ball ball_5 {{start?‘weiyi_5‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg5.png" mode="widthFix"></image>
    <image class="ball ball_6 {{start?‘weiyi_6‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg6.png" mode="widthFix"></image>
    <image class="ball ball_7 {{start?‘weiyi_7‘:‘‘}}" src="{{imgUrl}}small_program/game/game_luck_draw_egg7.png" mode="widthFix"></image>
   <image hidden="{{qiu}}" animation="{{ani}}" class="ball ball_end" src="{{imgUrl}}small_program/game/game_luck_draw_egg7.png" mode="widthFix" ></image>
  </view>

2.wxss

这一步比较麻烦,需要调试扭蛋的位置和动画路径

  1 /* 扭蛋机 */
  2 .egg{
  3   width: 100%;
  4   position: absolute;
  5   z-index: 3;
  6   top: 260rpx;
  7 }
  8 .egg .egg_ji{
  9   width: 70%;
 10   margin-left: 15%;
 11   z-index: 3;
 12 }
 13 .egg .play{
 14   width: 80rpx;
 15   position: absolute;
 16   z-index: 4;
 17   top: 405rpx;
 18   left: 275rpx;
 19 }
 20 .egg .ball{
 21   width: 75rpx;
 22   position: absolute;
 23   z-index: 2;
 24 }
 25 .egg .ball_1{
 26   top: 290rpx;
 27   left: 300rpx;
 28 }
 29 .egg .ball_2{
 30   top: 295rpx;
 31   left: 360rpx;
 32 }
 33 .egg .ball_3{
 34   top: 260rpx;
 35   left: 240rpx;
 36 }
 37 .egg .ball_4{
 38   top: 260rpx;
 39   left: 420rpx;
 40 }
 41 .egg .ball_5{
 42   top: 230rpx;
 43   left: 280rpx;
 44 }
 45 .egg .ball_6{
 46   top: 230rpx;
 47   left: 340rpx;
 48 }
 49 .egg .ball_7{
 50   top: 220rpx;
 51   left: 390rpx;
 52 }
 53 .egg .ball_end{
 54   top: 410rpx;
 55   left: 390rpx;
 56 }
 57
 58 .weiyi_1 {
 59  animation: around1 1.5s linear infinite;
 60 }
 61 .weiyi_2 {
 62  animation: around2 1.5s linear infinite;
 63 }
 64 .weiyi_3 {
 65  animation: around3 1.5s linear infinite;
 66 }
 67 .weiyi_4 {
 68  animation: around4 1.5s linear infinite;
 69 }
 70 .weiyi_5 {
 71  animation: around5 1.5s linear infinite;
 72 }
 73 .weiyi_6 {
 74  animation: around6 1.5s linear infinite;
 75 }
 76 .weiyi_7 {
 77  animation: around7 1.5s linear infinite;
 78 }
 79 .go{
 80   animation: around 0.3s linear 1;
 81 }
 82
 83
 84 /* 位移 */
 85 @keyframes around{
 86   100% {
 87  -webkit-transform: rotate(-180deg)
 88  }
 89 }
 90
 91 @keyframes around1 {
 92  0% {
 93  -webkit-transform: translate(0rpx, 0rpx)
 94  }
 95  20% {
 96  -webkit-transform: translate(-100rpx, -200rpx)
 97  }
 98  40% {
 99  -webkit-transform: translate(40rpx, -280rpx)
100  }
101  60% {
102  -webkit-transform: translate(150rpx, -200rpx)
103  }
104  80% {
105  -webkit-transform: translate(150rpx, -50rpx)
106  }
107  100% {
108  -webkit-transform: translate(0, 0)
109  }
110 }
111
112 @keyframes around2 {
113  0% {
114  -webkit-transform: translate(0rpx, 0rpx)
115  }
116  20% {
117  -webkit-transform: translate(100rpx, -200rpx)
118  }
119  40% {
120  -webkit-transform: translate(-20rpx, -280rpx)
121  }
122  60% {
123  -webkit-transform: translate(-150rpx, -200rpx)
124  }
125  80% {
126  -webkit-transform: translate(-150rpx, -50rpx)
127  }
128  100% {
129  -webkit-transform: translate(0, 0)
130  }
131 }
132
133 @keyframes around3 {
134  0% {
135  -webkit-transform: translate(0rpx, 0rpx)
136  }
137  20% {
138  -webkit-transform: translate(180rpx, 10rpx)
139  }
140  40% {
141  -webkit-transform: translate(240rpx, -110rpx)
142  }
143  60% {
144  -webkit-transform: translate(100rpx, -240rpx)
145  }
146  80% {
147  -webkit-transform: translate(-50rpx, -130rpx)
148  }
149  100% {
150  -webkit-transform: translate(0, 0)
151  }
152 }
153
154 @keyframes around4 {
155  0% {
156  -webkit-transform: translate(0rpx, 0rpx)
157  }
158  20% {
159  -webkit-transform: translate(-180rpx, 10rpx)
160  }
161  40% {
162  -webkit-transform: translate(-240rpx, -110rpx)
163  }
164  60% {
165  -webkit-transform: translate(-100rpx, -240rpx)
166  }
167  80% {
168  -webkit-transform: translate(50rpx, -130rpx)
169  }
170  100% {
171  -webkit-transform: translate(0, 0)
172  }
173 }
174
175 @keyframes around5 {
176  0% {
177  -webkit-transform: translate(0rpx, 0rpx)
178  }
179  20% {
180  -webkit-transform: translate(40rpx, 70rpx)
181  }
182  40% {
183  -webkit-transform: translate(50rpx, -210rpx)
184  }
185  60% {
186  -webkit-transform: translate(-80rpx, -100rpx)
187  }
188  80% {
189  -webkit-transform: translate(190rpx, -50rpx)
190  }
191  100% {
192  -webkit-transform: translate(0, 0)
193  }
194 }
195
196 @keyframes around6 {
197  0% {
198  -webkit-transform: translate(0rpx, 0rpx)
199  }
200  20% {
201  -webkit-transform: translate(-150rpx, -50rpx)
202  }
203  40% {
204  -webkit-transform: translate(130rpx, -140rpx)
205  }
206  60% {
207  -webkit-transform: translate(-110rpx, -180rpx)
208  }
209  80% {
210  -webkit-transform: translate(-130rpx, -20rpx)
211  }
212  100% {
213  -webkit-transform: translate(0, 0)
214  }
215 }
216
217 @keyframes around7 {
218  0% {
219  -webkit-transform: translate(0rpx, 0rpx)
220  }
221  20% {
222  -webkit-transform: translate(80rpx, -50rpx)
223  }
224  40% {
225  -webkit-transform: translate(-180rpx, -100rpx)
226  }
227  60% {
228  -webkit-transform: translate(50rpx, -150rpx)
229  }
230  80% {
231  -webkit-transform: translate(-180rpx, -20rpx)
232  }
233  100% {
234  -webkit-transform: translate(0, 0)
235  }
236 }

3.js

这一步要比css要是要简单的多,点击使动画动起来,调用api接口获取奖品就可以了

 1 Page({
 2
 3   /**
 4    * 页面的初始数据
 5    */
 6   data: {
 7     imgUrl: app.data.imgUrl,
 8     start : false,
 9     qiu: true,
10   },
11
12 /**
13  * 点击扭蛋机
14  */
15   eggPlay(){
16     let _this = this;
17
18     _this.setData({
19       start: true,
20     })
21     setTimeout(() => {
22       _this.setData({
23         start: false,
24         qiu: false,
25       })
26       //球落下动画
27       var animation = wx.createAnimation({
28         duration: 1500,
29         timingFunction: ‘ease‘,
30       });
31       animation.opacity(1).step()
32       this.setData({
33         ani: animation.export()
34       })
35     }, 3000);
36
37     _this.setData({
38       qiu: true
39     })
40     //将动画返回到开始位置
41     var animation = wx.createAnimation({
42       duration: 1500,
43       timingFunction: ‘ease‘,
44     });
45     animation.opacity(0).step()
46     this.setData({
47       ani: animation.export()
48     })
49   },

这个动画有个小的bug,就是连续点击按钮动画时间会变快,如果有更好的方法可以留言交流。

原文地址:https://www.cnblogs.com/li-fenghan/p/11577828.html

时间: 2024-10-29 19:05:38

微信小程序wxss制作扭蛋机的相关文章

less文件编译成微信小程序wxss文件

2016年9月21日,微信小程序正式开启内测.在微信生态下,触手可及.用完即走的微信小程序引起广泛关注,刷爆朋友圈子.在这样的火爆氛围中,作为一个前端开发者的我,也悄悄地去尝鲜. 在做demo小示例的过程中,我发现了一个极为让人为难的事儿:**如何让 less/sass 文件转成小程序的 wxss 文件**.</font> 对于基本不使用原生css,而习惯编写less的我,这个事儿让我的样式编写相当的吃力. 在尝试配置koala (一个可以编译less/sass的工具)以及搜索各种资料后,终于

微信小程序-WXSS

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式. WXSS 用来决定 WXML 的组件应该怎么显示. 为了适应广大的前端开发者,我们的 WXSS 具有 CSS 大部分特性. 同时为了更适合开发微信小程序,我们对 CSS 进行了扩充以及修改. 与 CSS 相比我们扩展的特性有: 尺寸单位 样式导入 尺寸单位 rpx(responsive pixel): 可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375

微信小程序免费制作一键生成平台是什么原理?速成应用代理需要多少钱

微信10亿活跃用户,10亿的流量等待瓜分.想想现在人们用哪个应用最多?当然是微信,而微信小程序就是依托微信而存在的,先天优势就在那里,怎么可能不火?作为想要创业以及苦于一直没有机会发现好商机的你,为什么要错过速成应用微信小程序加盟代理这个项目? 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不用关心是否安装太多应用的问题.应用将无处不在,随时可用,但又无需安装卸载.全面开放

微信小程序wxss样式

WXSS 样式 WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改. 新增了尺寸单位.在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位.WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差. 提供了全局的样式和局部样式.和前边 app.json, page.json 的概念相同,你可以写一个 app

微信小程序商城制作-共享链开发

微信小程序已经正式发布了一段时间,在互联网知名企业的带领下,众多中小企业也都在迅速涌入这个潜藏巨大商机的市场.其中有京东.去哪儿等热门小程序,大家也已经看了不少了.共享链平台开发:151-1222-4001(微/电)于此同时兄弟连就研发了三款小程序上线,并从中提取要点组织一套可以做微信小程序培训开发全栈班的课程体系,并由教学总监亲自授课.为了能让更多人有机会学习这个课程,针对有一定基础的开发工程师开设了线上课程,现在有几千人同时观看这个直播课,好评如潮.下边呢,我们不妨从一些已经上线并且非常实用

[微信小程序].wxss出错,2 not found

小程序新建项目就出错:2 not found(不是一般的郁闷,新建项目就报错...) 大概的情况是开发工具没有更新.或更新不到, 第一,可以删掉开发工具重新下载最新安装: 第二,可以到工具安装目录(C:\Users\Administrator\AppData\Local\微信web开发者工具\User Data\WeappVendor)下的wcsc.exe给删除掉,运行项目就没错了,重新打开开发工具有提示可以更新最新版本的 亲测有效 然后就可以:Hello World 原文地址:https://

微信小程序开发——微信小程序下拉刷新真机无法弹回

开发工具中下拉之后页面回弹有一定的延迟,这个时间也有点久.真机测试,下拉后连回弹都没有,这个问题要解决,就得在下拉函数里加上停止下拉刷新的API,如下: /** * 下拉刷新 */ onPullDownRefresh: function(e) { this.getList() wx.stopPullDownRefresh(); } 原文地址:https://www.cnblogs.com/xyyt/p/10855817.html

微信小程序~下拉刷新真机测试不弹回的处理办法

问题描述: 下拉刷新在手机上不会自动回弹,开发工具可以 解决办法: 主动调用wx.stopPullDownRefresh /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { console.log('onPullDownRefresh') // 3秒模拟数据加载 setTimeout(function () { // 不加这个方法真机下拉会一直处于刷新状态,无法复位 wx.stopPullDownRefresh() },

微信小程序:其中wxml和wxss的样式说明

微信小程序:其中wxml和wxss的样式说明 一.简介 对于css不熟悉的Android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了.微信小程序的排版就跟wxml和wxss有关了,它们两者相当于android的布局文件,其中wxml指定了界面的框架结构,而wxss指定了界面的框架及元素的显示样式. 二.wxml 界面结构wxmL比较容易理解,主要是由八大类基础组件构成: 关于这八大类的属性和具体用法可参考以下参考文献链接: http://www.w3cschool.cn/w