微信小程序实例-摇一摇抽奖

来源:互联网 发布:java并发编程 pdf 编辑:程序博客网 时间:2024/05/16 05:49

概述

前面我们讲了如何开始微信小程序搭建和一些组件的介绍。微信小组件和微信小程序入门

微信小程序目录

为了更好的理解小程序和小程序开发,我们首先来看一下项目的目录。
首先看下根目录下的app.json的文件,可以看到在”pages”的数组里,里面配置了每个界面,且包含了每个界面文件的目录
这里写图片描述
我们接下来看一下page文件夹,可以看到每个页面需要包含两个文件,一个是js文件,是每个界面的入口,wxml的文件是每个界面的布局文件,wxss是样式文件。
这里写图片描述
接下来看一下logs文件夹,在logs文件夹中比index文件夹中多出了一个logs.json的文件,logs.json这个文件配置了一个界面的title的信息。
为了更好的理解项目的结构,我们来一张gif图。
这里写图片描述

摇一摇项目实例

我们首先看一下测试效果
这里写图片描述

添加图片资源

这里写图片描述

index.js

之前说过这个文件中监听并处理小程序的生命周期函数、声明全局变量,调用框架提供的丰富的 API,相当于我们写移动端时候的逻辑代码。

//index.js//获取应用实例var app = getApp()Page({  data: {    circleList: [],//圆点数组    awardList: [],//奖品数组    colorCircleFirst: '#FFDF2F',//圆点颜色1    colorCircleSecond: '#FE4D32',//圆点颜色2    colorAwardDefault: '#F5F0FC',//奖品默认颜色    colorAwardSelect: '#ffe400',//奖品选中颜色    indexSelect: 0,//被选中的奖品index    isRunning: false,//是否正在抽奖    imageAward: [      '../../images/1.jpg',      '../../images/2.jpg',      '../../images/3.jpg',      '../../images/4.jpg',      '../../images/5.jpg',      '../../images/6.jpg',      '../../images/7.jpg',      '../../images/8.jpg',    ],//奖品图片数组  },  onLoad: function () {    var _this = this;    //圆点设置    var leftCircle = 7.5;    var topCircle = 7.5;    var circleList = [];    for (var i = 0; i < 24; i++) {      if (i == 0) {        topCircle = 15;        leftCircle = 15;      } else if (i < 6) {        topCircle = 7.5;        leftCircle = leftCircle + 102.5;      } else if (i == 6) {        topCircle = 15        leftCircle = 620;      } else if (i < 12) {        topCircle = topCircle + 94;        leftCircle = 620;      } else if (i == 12) {        topCircle = 565;        leftCircle = 620;      } else if (i < 18) {        topCircle = 570;        leftCircle = leftCircle - 102.5;      } else if (i == 18) {        topCircle = 565;        leftCircle = 15;      } else if (i < 24) {        topCircle = topCircle - 94;        leftCircle = 7.5;      } else {        return      }      circleList.push({ topCircle: topCircle, leftCircle: leftCircle });    }    this.setData({      circleList: circleList    })    //圆点闪烁    setInterval(function () {      if (_this.data.colorCircleFirst == '#FFDF2F') {        _this.setData({          colorCircleFirst: '#FE4D32',          colorCircleSecond: '#FFDF2F',        })      } else {        _this.setData({          colorCircleFirst: '#FFDF2F',          colorCircleSecond: '#FE4D32',        })      }    }, 500)    //奖品item设置    var awardList = [];    //间距,怎么顺眼怎么设置吧.    var topAward = 25;    var leftAward = 25;    for (var j = 0; j < 8; j++) {      if (j == 0) {        topAward = 25;        leftAward = 25;      } else if (j < 3) {        topAward = topAward;        //166.6666是宽.15是间距.下同        leftAward = leftAward + 166.6666 + 15;      } else if (j < 5) {        leftAward = leftAward;        //150是高,15是间距,下同        topAward = topAward + 150 + 15;      } else if (j < 7) {        leftAward = leftAward - 166.6666 - 15;        topAward = topAward;      } else if (j < 8) {        leftAward = leftAward;        topAward = topAward - 150 - 15;      }      var imageAward = this.data.imageAward[j];      awardList.push({ topAward: topAward, leftAward: leftAward, imageAward: imageAward });    }    this.setData({      awardList: awardList    })  },  //开始游戏  startGame: function () {    if (this.data.isRunning) return    this.setData({      isRunning: true    })    var _this = this;    var indexSelect = 0    var i = 0;    var timer = setInterval(function () {      indexSelect++;      //这里我只是简单粗暴用y=30*x+200函数做的处理.可根据自己的需求改变转盘速度      i += 30;      if (i > 1000) {        //去除循环        clearInterval(timer)        //获奖提示        wx.showModal({          title: '恭喜您',          content: '获得了第' + (_this.data.indexSelect + 1) + "个优惠券",          showCancel: false,//去掉取消按钮          success: function (res) {            if (res.confirm) {              _this.setData({                isRunning: false              })            }          }        })      }      indexSelect = indexSelect % 8;      _this.setData({        indexSelect: indexSelect      })    }, (200 + i))  }})

index.json

这个文件是配置文件。这里我们不需要配置。

index.wxss

index.wxss 是整个小程序的样式表,如这个摇奖对应得摇一摇样式。对css熟悉的肯定不会陌生。

/**index.wxss**/.container-out {  height: 600rpx;  width: 650rpx;  background-color: #b136b9;  margin: 100rpx auto;  border-radius: 40rpx;  box-shadow: 0 10px 0 #871a8e;  position: relative;}.container-in {  width: 580rpx;  height: 530rpx;  background-color: #871a8e;  border-radius: 40rpx;  position: absolute;  left: 0;  right: 0;  top: 0;  bottom: 0;  margin: auto;}/**小圆球box-shadow: inset 3px 3px 3px #fff2af;*/.circle {  position: absolute;  display: block;  border-radius: 50%;  height: 20rpx;  width: 20rpx;}.content-out {  position: absolute;  height: 150rpx;  width: 166.6666rpx;  background-color: #f5f0fc;  border-radius: 15rpx;  box-shadow: 0 5px 0 #d87fde;}/**居中 加粗*/.start-btn {  position: absolute;  margin: auto;  top: 0;  left: 0;  bottom: 0;  right: 0;  border-radius: 15rpx;  height: 150rpx;  width: 166.6666rpx;  background-color: #ffe400;  box-shadow: 0 5px 0 #e7930a;  color: #f6251e;  text-align: center;  font-size: 55rpx;  font-weight: bolder;  line-height: 150rpx;}.award-image {  position: absolute;  margin: auto;  top: 0;  left: 0;  bottom: 0;  right: 0;  height: 140rpx;  width: 130rpx;}

index.wxml

index.wxml 是页面的结构文件,如果有需要就需要配置。这里大家可以参照项目的文档说明

<!--index.wxml--><view class="container-out">  <view class="circle" wx:for="{{circleList}}" style="top:{{item.topCircle}}rpx;left:{{item.leftCircle}}rpx;background-color: {{(index%2==0)?colorCircleFirst:colorCircleSecond}};"></view>  <view class="container-in">    <view class="content-out" wx:for="{{awardList}}" style="top:{{item.topAward}}rpx;left:{{item.leftAward}}rpx;background-color: {{(index==indexSelect)?colorAwardSelect:colorAwardDefault}};">      <image class="award-image" src="{{item.imageAward}}"></image>    </view>    <view class="start-btn" bindtap="startGame" style=" background-color:{{isRunning?'#e7930a':'#ffe400'}}">START</view>  </view></view>
1 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 无线网不能用了怎么办 率土之滨流浪后怎么办 率土之滨围洛阳怎么办 率土之滨没资源怎么办 竞彩改期的比赛怎么办 变性人老了会怎么办 冰箱放阳台直晒怎么办 喝了冰牛奶胃痛怎么办 空腹喝咖啡胃疼怎么办 空腹吃柿子胃疼怎么办 mac重启卡住了怎么办 快玩下载速度慢怎么办 微信消息不提示怎么办 车被物业锁了怎么办 去香港办的团签怎么办 香港个人签证g签怎么办 诛仙3挂机掉线怎么办 大神f2开不了机怎么办 昆仑账号忘记了怎么办 三星手机wifi信号弱怎么办 6个月的宝宝缺钙怎么办 半岁宝宝坐不稳怎么办 你宝宝老不睡觉怎么办 三岁宝宝摸咪咪怎么办 宝宝很困又不睡怎么办 两岁宝宝摸咪咪怎么办 失眠怎么办如何快速睡眠小偏方 9岁儿童睡不着觉怎么办 2岁儿童睡不着觉怎么办 多梦头晕没精神怎么办 晚上睡眠不好老做梦怎么办 睡醒后喉咙干痛怎么办 感冒了喉咙干痛怎么办 老公想你了你该怎么办 赌博赢来的100万怎么办 赌博输了60万怎么办 网赌欠债10几万怎么办 网赌欠债还不起怎么办 赌博输了好多钱怎么办 赌钱输了400万怎么办 赌博输了10万怎么办