Maison >Applet WeChat >Développement de mini-programmes >L'applet WeChat permet le partage des codes de loterie Shake (photo)

L'applet WeChat permet le partage des codes de loterie Shake (photo)

高洛峰
高洛峰original
2017-03-30 15:30:416382parcourir

Cet article présente principalement les informations pertinentes sur l'exemple de code d'implémentation simple du mini programme WeChat Shake and Draw. La fonction shake and draw est implémentée ici. Les amis qui en ont besoin peuvent s'y référer

WeChat. mini programme Shake Shake Lottery

Répertoire des mini programmes WeChat

Afin de mieux comprendre les mini programmes et le développement de mini programmes, jetons d'abord un coup d'œil au répertoire du projet.

Regardez d'abord le fichier app.json dans le répertoire racine. Vous pouvez voir que dans le tableau de "pages", chaque interface est configurée et inclut chaque répertoire d'interface. fichiers


 微信小程序实现摇一摇抽奖代码分享

Jetons ensuite un coup d'œil au dossier de la page. Nous pouvons voir que chaque page doit contenir deux fichiers, l'un est js. Le fichier est. l'entrée de chaque interface, le fichier wxml est le fichier de mise en page de chaque interface, et wxss est le fichier de style.


 微信小程序实现摇一摇抽奖代码分享

Ensuite, jetez un œil au dossier des journaux. Il y a un fichier logs.json de plus dans le dossier des journaux que dans le dossier d'index, les journaux. Le fichier .json configure les informations de titre d'une interface.

Afin de mieux comprendre la structure du projet, prenons un diagramme gif.
 微信小程序实现摇一摇抽奖代码分享

Exemple de projet Shake

Jetons d'abord un coup d'œil aux résultats du test
 微信小程序实现摇一摇抽奖代码分享

Ajouter une image Ressources

 微信小程序实现摇一摇抽奖代码分享

index.js

Comme mentionné précédemment, ce fichier surveille et traite le cycle de vie de l'applet Fonction, déclarez des variables globales et appelez la riche API fournie par le framework, qui est équivalent au code logique lorsque nous écrivons le terminal mobile.

//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 == &#39;#FFDF2F&#39;) {
    _this.setData({
     colorCircleFirst: &#39;#FE4D32&#39;,
     colorCircleSecond: &#39;#FFDF2F&#39;,
    })
   } else {
    _this.setData({
     colorCircleFirst: &#39;#FFDF2F&#39;,
     colorCircleSecond: &#39;#FE4D32&#39;,
    })
   }
  }, 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: &#39;恭喜您&#39;,
     content: &#39;获得了第&#39; + (_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

Ce fichier est le fichier de configuration. Nous n'avons pas besoin de configuration ici.

index.wxss

index.wxss est la feuille de style de tout le mini programme, comme cette loterie correspondant au style shake. Ceux qui connaissent le CSS le connaîtront certainement.

/**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 est le fichier de structure de la page et doit être configuré si nécessaire. Ici, vous pouvez vous référer à la Description du document

<!--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?&#39;#e7930a&#39;:&#39;#ffe400&#39;}}">START</view>
 </view>
</view>

Ce qui précède est le contenu de l'applet WeChat pour implémenter le partage de code de loterie Shake (photo). Pour plus de contenu connexe, veuillez payer. attention au site PHP chinois (www.php.cn) !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn