小程序制作扭蛋机

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

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

 /* 扭蛋机 */
.egg{
width: %;
position: absolute;
z-index: ;
top: 260rpx;
}
.egg .egg_ji{
width: %;
margin-left: %;
z-index: ;
}
.egg .play{
width: 80rpx;
position: absolute;
z-index: ;
top: 405rpx;
left: 275rpx;
}
.egg .ball{
width: 75rpx;
position: absolute;
z-index: ;
}
.egg .ball_1{
top: 290rpx;
left: 300rpx;
}
.egg .ball_2{
top: 295rpx;
left: 360rpx;
}
.egg .ball_3{
top: 260rpx;
left: 240rpx;
}
.egg .ball_4{
top: 260rpx;
left: 420rpx;
}
.egg .ball_5{
top: 230rpx;
left: 280rpx;
}
.egg .ball_6{
top: 230rpx;
left: 340rpx;
}
.egg .ball_7{
top: 220rpx;
left: 390rpx;
}
.egg .ball_end{
top: 410rpx;
left: 390rpx;
} .weiyi_1 {
animation: around1 .5s linear infinite;
}
.weiyi_2 {
animation: around2 .5s linear infinite;
}
.weiyi_3 {
animation: around3 .5s linear infinite;
}
.weiyi_4 {
animation: around4 .5s linear infinite;
}
.weiyi_5 {
animation: around5 .5s linear infinite;
}
.weiyi_6 {
animation: around6 .5s linear infinite;
}
.weiyi_7 {
animation: around7 .5s linear infinite;
}
.go{
animation: around .3s linear ;
} /* 位移 */
@keyframes around{
% {
-webkit-transform: rotate(-180deg)
}
} @keyframes around1 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(-100rpx, -200rpx)
}
% {
-webkit-transform: translate(40rpx, -280rpx)
}
% {
-webkit-transform: translate(150rpx, -200rpx)
}
% {
-webkit-transform: translate(150rpx, -50rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around2 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(100rpx, -200rpx)
}
% {
-webkit-transform: translate(-20rpx, -280rpx)
}
% {
-webkit-transform: translate(-150rpx, -200rpx)
}
% {
-webkit-transform: translate(-150rpx, -50rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around3 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(180rpx, 10rpx)
}
% {
-webkit-transform: translate(240rpx, -110rpx)
}
% {
-webkit-transform: translate(100rpx, -240rpx)
}
% {
-webkit-transform: translate(-50rpx, -130rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around4 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(-180rpx, 10rpx)
}
% {
-webkit-transform: translate(-240rpx, -110rpx)
}
% {
-webkit-transform: translate(-100rpx, -240rpx)
}
% {
-webkit-transform: translate(50rpx, -130rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around5 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(40rpx, 70rpx)
}
% {
-webkit-transform: translate(50rpx, -210rpx)
}
% {
-webkit-transform: translate(-80rpx, -100rpx)
}
% {
-webkit-transform: translate(190rpx, -50rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around6 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(-150rpx, -50rpx)
}
% {
-webkit-transform: translate(130rpx, -140rpx)
}
% {
-webkit-transform: translate(-110rpx, -180rpx)
}
% {
-webkit-transform: translate(-130rpx, -20rpx)
}
% {
-webkit-transform: translate(, )
}
} @keyframes around7 {
% {
-webkit-transform: translate(0rpx, 0rpx)
}
% {
-webkit-transform: translate(80rpx, -50rpx)
}
% {
-webkit-transform: translate(-180rpx, -100rpx)
}
% {
-webkit-transform: translate(50rpx, -150rpx)
}
% {
-webkit-transform: translate(-180rpx, -20rpx)
}
% {
-webkit-transform: translate(, )
}
}

3.js

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

 Page({

   /**
* 页面的初始数据
*/
data: {
imgUrl: app.data.imgUrl,
start : false,
qiu: true,
}, /**
* 点击扭蛋机
*/
eggPlay(){
let _this = this; _this.setData({
start: true,
})
setTimeout(() => {
_this.setData({
start: false,
qiu: false,
})
//球落下动画
var animation = wx.createAnimation({
duration: ,
timingFunction: 'ease',
});
animation.opacity().step()
this.setData({
ani: animation.export()
})
}, ); _this.setData({
qiu: true
})
//将动画返回到开始位置
var animation = wx.createAnimation({
duration: ,
timingFunction: 'ease',
});
animation.opacity().step()
this.setData({
ani: animation.export()
})
},

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

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

  1. 微信小程序----wxss设置样式

    一.wxml 界面结构wxmL比较容易理解,主要是由八大类基础组件构成: 一.视图容器(View Container): 二.基础内容(Basic Content) 组件名 说明 组件名 说明 vie ...

  2. 微信小程序wxss设置样式

    微信小程序wxss设置样式 对于以前搞客户端开发的来说,有着客户端的逻辑,就是不知道怎么设置样式,把对应的控件显示出来 一.wxml 界面结构wxmL比较容易理解,主要是由八大类基础组件构成: 一.视 ...

  3. 微信小程序在线制作 自己制作微信小程序

    小程序是个什么东西?怎么自己制作微信小程序?微信小程序在线制作难吗?最近老是听这类问题,耳朵都长茧子了. 百牛信息技术bainiu.ltd整理发布于博客园 接下来作为一个技术人员的角度就为大家分析一下 ...

  4. 微信小程序wxss样式详解

    一.wxml 界面结构wxmL比较容易理解,主要是由八大类基础组件构成: 一.视图容器(View Container): 二.基础内容(Basic Content) 组件名 说明 组件名 说明 vie ...

  5. 微信小程序swiper制作内容高度不定的tab选项卡

    微信小程序利用swiper制作内容高度不定的tab选项卡,不使用absolute定位,不定高度,由内容自由撑开主要思路是获取内容区的高度来给swiper动态设置值 .wxml <view cla ...

  6. 微信小程序-从零开始制作一个跑步微信小程序

    来源:伯乐在线 - 王小树 链接:http://ios.jobbole.com/90603/ 点击 → 申请加入伯乐在线专栏作者 一.准备工作 1.注册一个小程序账号,得用一个没注册过公众号的邮箱注册 ...

  7. 微信小程序,制作属于自己的Icon图标

    前言 最近在接手一个微信小程序,发现里面的图标都是使用的image组件,看起来非常别扭,加载也不太顺畅. 就想着看看微信有没有类似自带的图标库可以使用. 有是有,就是太少了,翻来翻去好像也就 8 种, ...

  8. 微信小程序-WXSS

    WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式. WXSS 用来决定 WXML 的组件应该怎么显示. 为了适应广大的前端开发者,我们的 WXSS 具有 ...

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

    2016年9月21日,微信小程序正式开启内测.在微信生态下,触手可及.用完即走的微信小程序引起广泛关注,刷爆朋友圈子.在这样的火爆氛围中,作为一个前端开发者的我,也悄悄地去尝鲜.在做demo小示例的过 ...

随机推荐

  1. 运输计划noip

    靠!这道题TM搞了我好几天,真是烦死人!!!早上打了一个倍增的TM只有95分QAQ... 然后一气之下开始不断卡常,各种玄学优化,可是就是T..TAT.. 可恶!晚上我就直接打了个tarjan,还好跑 ...

  2. 13-1 jquery操作cookie

    jQuery之cookie操作 Cookies 定义:让网站服务器把少量数据存储到客户端的硬盘或内存,从客户端的硬盘里读取数据的一种技术; 下载与引入:jquery.cookie.js基于jquery ...

  3. PROD异机全备份恢复验证实施文档

    PROD异机全备份恢复验证实施文档 ******利用10月25日的全量备份.10月26日当天的归档日志及当前redo日志,恢复数据库到故障前数据库状态****** 准备工作:source 源库:PRO ...

  4. SeaJS基本开发原则

    SeaJS基本开发原则在讨论SeaJS的具体使用前,先介绍一下SeaJS的模块化理念和开发原则.使用SeaJS开发JavaScript的基本原则就是:一切皆为模块.引入SeaJS后,编写JavaScr ...

  5. something about motorcycle and automobile

    cycle: 循环, 周期, 自行车. 摩托车: motorcycle, motor cycle 轮胎 continent(al): 大陆的, (七)大洲的; 德国的大陆轮胎, 马牌轮胎; 如吉普的c ...

  6. CSS - 初始值、指定值、计算值、应用值、实际值

    初始值:未提供指定值且未从父元素指定值继承的 CSS 属性的值. 指定值:通过直接声明或 CSS 属性的值. 计算值:通过需要计算得到的值,如,继承和相对的尺寸.(注意:有些计算要等到布局确定才能进行 ...

  7. leetcode 62. 不同路径(C++)

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多 ...

  8. 013-Spring Boot web【二】静态资源、Servlet、Filter、listenter

    一.静态资源 1.1.webapp默认支持静态资源 在src/main/webapp下建立user.html默认支持访问 1.2.默认内置静态资源目录.可被直接访问 查看包:spring-boot-a ...

  9. VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

    目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_10_字节输入流一次读取一个字节的原理

    原理解析 创建一个字节流,指向读取文件的第一个字节.  read找jvm,jvm找os.os去读取硬盘.,读取后指正向后移动一位