最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序開(kāi)發(fā)之實(shí)現(xiàn)搖色子游戲

 更新時(shí)間:2023年01月21日 08:40:27   作者:失散多年的哥哥  
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)微信小程序開(kāi)發(fā)一個(gè)簡(jiǎn)單的搖色子游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以和小編一起學(xué)習(xí)一下

一、項(xiàng)目展示

搖色子是一款簡(jiǎn)易的游戲類(lèi)小程序

用戶(hù)可以投出1-9個(gè)色子

二、核心代碼

dice.wxml

<!--pages/dice/dice.wxml-->
<import src="dice/dice-template.wxml" />
<view id="header">
  <view class="btn" catchtap="reduceDice">
    <image src="/images/btn-left.png"></image>
  </view>
  <text id="dice-count">{{diceCount}}</text>
  <view class="btn" catchtap="addDice">
    <image src="/images/btn-right.png"></image>
  </view>
</view>
<view id="dice-zone">
  <block wx:for="{{dicesData}}">
    <template is="dice-template" data="{{...item}}" />
  </block>
</view>
<view id="btn-roll-container" catchtap="onRollTap">
  <text id="btn-roll" >搖</text>
</view>

dice.js

// pages/dice/dices.js
Page({
  data: {
    diceCount: 1,
    dicesData:[]
  },
  onLoad: function (options) {
    // 頁(yè)面初始化 options為頁(yè)面跳轉(zhuǎn)所帶來(lái)的參數(shù)
    this.dotsData = {
      1: "5",
      2: "28",
      3: "357",
      4: "1379",
      5: "13579",
      6: "134679"
    };
    this.timer = null;
    this.animation = wx.createAnimation({
      duration: 400,
      timingFunction: 'linear',
    });
  },
  onReady: function () {
    // 頁(yè)面渲染完成
  },
  onShow: function () {
    // 頁(yè)面顯示
  },

  // 產(chǎn)生色子點(diǎn)數(shù)
  createDotData: function () {
    var num = Math.ceil(Math.random() * 6);
    var diceData = this.dotsData[num];
    var dotsHidden = {};
    for (var i = 1; i <= 9; i++) {
      if (diceData.indexOf(i) > -1) {
        dotsHidden[i] = "black";
      } else {
        dotsHidden[i] = "white";
      }
    };
    return dotsHidden;
  },

  // 產(chǎn)生色子動(dòng)畫(huà)
  createAnim: function (left, top) {
    // 色子移入屏幕
    this.animation.top(top + "rpx").left(left + "rpx").rotate(Math.random()*180).step({ duration: 1000, timingFunction: "ease-out" });
    return this.animation.export();
  },

  // 產(chǎn)生色子移動(dòng)終點(diǎn)位置
  createDicesPos: function () {
    var dicesPos = [];
    // 色子位置判斷
    function judgePos(l, t) {
      for (var j = 0; j < dicesPos.length; j++) {
        // 判斷新產(chǎn)生的色子位置是否與之前產(chǎn)生的色子位置重疊
        if ((dicesPos[j].left-146 < l && l < dicesPos[j].left + 146) && (dicesPos[j].top-146 < t && t < dicesPos[j].top + 146)) {
          return false;
        }
      }
      return true;
    }
    for (var i = 0; i < this.data.diceCount; i++) {
      var posData = {},
          left = 0,
          top = 0;
      do {
        // 隨機(jī)產(chǎn)生色子的可能位置
        left = Math.round(Math.random() * 600); // 0~600,根據(jù)色子區(qū)域和色子的大小計(jì)算得出
        top = Math.round(Math.random() * 550); // 0~550,根據(jù)色子區(qū)域和色子的大小計(jì)算得出
      } while (!judgePos(left,top));
      posData.left = left;
      posData.top = top;
      dicesPos.push(posData);
    }
    return dicesPos;
  },

  // 設(shè)置色子數(shù)據(jù)
  setDicesData: function (diceCount) {
    var dicesData = [];

    // 色子動(dòng)畫(huà)數(shù)據(jù)
    var dicesPos = this.createDicesPos(); // 所有色子的位置數(shù)據(jù)
    for (var i = 0; i < diceCount; i++) {
      var diceData = {};
      diceData.anim = this.createAnim(dicesPos[i].left, dicesPos[i].top);
      diceData.dots = this.createDotData();
      dicesData.push(diceData);
    }
    this.setData({ dicesData: dicesData });
    
  },

  // 搖色子
  onRollTap: function () {
    // 設(shè)置色子移出動(dòng)畫(huà)
    var newData = this.data.dicesData;
    if(newData.length < this.data.diceCount){
      for(var i = 0; i < this.data.diceCount;i++){
        var data = {};
        newData.push(data);
      }
    }
    for (var i = 0; i < newData.length; i++) {
      this.animation.left("-233rpx").top("123rpx").rotate(-180).step();
      newData[i].anim = this.animation.export();
      this.setData({ dicesData: newData });
    }
    
    var that = this;
    this.timer = setTimeout(function(){
      // 色子改變點(diǎn)數(shù)并移入屏幕
      that.setDicesData(that.data.diceCount);
    },1400)
    
  },

  // 減少色子數(shù)量
  reduceDice: function () {
    if (this.data.diceCount > 1) {
      this.setData({
        diceCount: this.data.diceCount - 1
      })
    }
  },

  // 增加色子數(shù)量
  addDice: function () {
    if (this.data.diceCount < 9) {
      this.setData({
        diceCount: this.data.diceCount + 1
      })
    }
  }
})

三、效果圖

具體的效果展示如下

以上就是微信小程序開(kāi)發(fā)之實(shí)現(xiàn)搖色子游戲的詳細(xì)內(nèi)容,更多關(guān)于小程序搖色子游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于ajax實(shí)現(xiàn)文件上傳并顯示進(jìn)度條

    基于ajax實(shí)現(xiàn)文件上傳并顯示進(jìn)度條

    這篇文章主要介紹了基于ajax實(shí)現(xiàn)文件上傳并顯示進(jìn)度條,需要的朋友可以參考下
    2015-08-08
  • 微信小程序?qū)崿F(xiàn)的一鍵撥號(hào)功能示例

    微信小程序?qū)崿F(xiàn)的一鍵撥號(hào)功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的一鍵撥號(hào)功能,結(jié)合實(shí)例形式分析了微信小程序使用wx.makePhoneCall實(shí)現(xiàn)撥打電話(huà)功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • JS 文字符串轉(zhuǎn)換unicode編碼函數(shù)

    JS 文字符串轉(zhuǎn)換unicode編碼函數(shù)

    AJAX傳遞中文字符串時(shí)必須把中文字符串編碼成unicode,一般會(huì)用到JS的自帶函數(shù)escape().不過(guò)找到了更好的函數(shù)來(lái)確決中文字符轉(zhuǎn)換成unicode編碼的函數(shù)
    2009-05-05
  • ES6 Promise對(duì)象概念與用法分析

    ES6 Promise對(duì)象概念與用法分析

    這篇文章主要介紹了ES6 Promise對(duì)象概念與用法,簡(jiǎn)單分析了Promise對(duì)象的基本狀態(tài)與三種重要方法,并結(jié)合實(shí)例形式給出相關(guān)使用技巧,需要的朋友可以參考下
    2017-04-04
  • 使用JS中的exec()方法構(gòu)造正則表達(dá)式驗(yàn)證

    使用JS中的exec()方法構(gòu)造正則表達(dá)式驗(yàn)證

    這篇文章主要介紹了使用JS中的exec()方法構(gòu)造正則表達(dá)式驗(yàn)證的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 常用JS代碼實(shí)例小結(jié)

    常用JS代碼實(shí)例小結(jié)

    跟網(wǎng)上的一些常用的不太一樣,個(gè)人都有個(gè)人常用的代碼,大家看到好東西,不一定什么都會(huì),起碼要知道有這么個(gè)東西。方便以后用也方便找。
    2009-04-04
  • 常見(jiàn)JS前端接口校驗(yàn)方式總結(jié)

    常見(jiàn)JS前端接口校驗(yàn)方式總結(jié)

    作為一名優(yōu)秀的接口調(diào)用工程師,對(duì)接口的返回信息進(jìn)行校驗(yàn)是必不可少的,本文整理的是一些常用的校驗(yàn)方式,希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2023-05-05
  • 在JavaScript中獲取請(qǐng)求的URL參數(shù)[正則]

    在JavaScript中獲取請(qǐng)求的URL參數(shù)[正則]

    在ASP.NET后臺(tái)代碼中,對(duì)于這樣的URL請(qǐng)求地址:http://www.abc.com?id=001,我們可以通過(guò)Request.QueryString["id"]的方法很容易的獲取到URL中請(qǐng)求的參數(shù)的值,但是要在前臺(tái)js代碼中獲取請(qǐng)求的參數(shù)的值,應(yīng)該怎么做呢?
    2010-12-12
  • 微信小程序movable view移動(dòng)圖片和雙指縮放實(shí)例代碼

    微信小程序movable view移動(dòng)圖片和雙指縮放實(shí)例代碼

    movable-area是微信小程序的新組件,可以用來(lái)移動(dòng)視圖區(qū)域movable-view。這篇文章主要介紹了微信小程序movable view移動(dòng)圖片和雙指縮放實(shí)例代碼,需要的朋友可以參考下
    2017-08-08
  • JavaScript如何正確聲明和使用變量詳細(xì)代碼實(shí)例

    JavaScript如何正確聲明和使用變量詳細(xì)代碼實(shí)例

    變量是程序在內(nèi)存中申請(qǐng)的一塊用來(lái)存放數(shù)據(jù)的空間,下面這篇文章主要給大家介紹了關(guān)于JavaScript如何正確聲明和使用變量的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07

最新評(píng)論

秦皇岛市| 隆德县| 昌黎县| 册亨县| 聂荣县| 明光市| 云梦县| 珠海市| 大埔县| 遵义市| 资源县| 濮阳县| 东乡县| 绥棱县| 扶余县| 沙河市| 富源县| 东莞市| 五台县| 芒康县| 多伦县| 马关县| 定陶县| 镇宁| 云和县| 翁牛特旗| 上林县| 灵寿县| 武平县| 思茅市| 阿荣旗| 新乡县| 西昌市| 霍城县| 永济市| 安仁县| 梓潼县| 陇南市| 台南县| 茶陵县| 武胜县|