码迷,mamicode.com
首页 > 微信 > 详细

微信小程序wxss制作扭蛋机

时间:2019-09-24 14:21:35      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:margin   als   nsf   api接口   timeout   图片   near   create   mat   

小程序制作扭蛋机

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,就是连续点击按钮动画时间会变快,如果有更好的方法可以留言交流。

微信小程序wxss制作扭蛋机

标签:margin   als   nsf   api接口   timeout   图片   near   create   mat   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!