欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VUE實(shí)現(xiàn)大轉(zhuǎn)盤抽獎(jiǎng)

 更新時(shí)間:2021年05月13日 11:25:43   作者:依舊優(yōu)雅  
營(yíng)運(yùn)三寶(九宮格、大轉(zhuǎn)盤、老虎機(jī),當(dāng)然此三寶當(dāng)然是最基礎(chǔ)的營(yíng)銷運(yùn)營(yíng)手段),本片文章聊聊大轉(zhuǎn)盤,轉(zhuǎn)盤的實(shí)現(xiàn)邏輯應(yīng)該是營(yíng)銷方案較為簡(jiǎn)單的一種了,本文將介紹如何實(shí)現(xiàn)大轉(zhuǎn)盤抽獎(jiǎng),感興趣的朋友可以參考下

UI

老規(guī)矩,先看下靜態(tài)UI,以便于有個(gè)圖像概念

初始參考各值參考圖

方案分析-參數(shù)配置

核心思路:

將指針和中獎(jiǎng)區(qū)域劃分兩部分,目前常規(guī)的效果,控制中獎(jiǎng)區(qū)域旋轉(zhuǎn),然后停在指針處,當(dāng)然控制指針也可以,一套思路,dom結(jié)構(gòu)也比較簡(jiǎn)單,唯一算是復(fù)雜點(diǎn)的就是中獎(jiǎng)區(qū)域,但是如果你足夠懶,像我一樣,你可以傳遞一張圖也可以,完全依賴遠(yuǎn)端數(shù)據(jù);

關(guān)于旋轉(zhuǎn)位置

每個(gè)移動(dòng)位置應(yīng)均分,360/個(gè)數(shù) === 每個(gè)獎(jiǎng)品所占據(jù)的位置,以本文為例8個(gè)獎(jiǎng)品位置,每個(gè)區(qū)域應(yīng)為45deg,每個(gè)指針中心位置應(yīng)為±22.5deg(±的意思看你是順時(shí)針還是逆時(shí)針)具體值看下面 實(shí)現(xiàn)邏輯 區(qū)域

參數(shù)配置

  • data 給與組件一些系統(tǒng)參數(shù) 旋轉(zhuǎn)的圈數(shù)、效果等等配置
  • 計(jì)算屬性 rotateStyle 旋轉(zhuǎn)角度,實(shí)時(shí)調(diào)整
  • props 提供組件內(nèi)部接口的參數(shù)和一些核心數(shù)據(jù),比如轉(zhuǎn)盤的圖片等等
// 基礎(chǔ)參數(shù)
data () {
   return {
     isrun: false,
     rotateAngle: 0, // 旋轉(zhuǎn)角度
     config: {
       duration: 4000, // 總旋轉(zhuǎn)時(shí)間 ms級(jí)
       circle: 8, // 旋轉(zhuǎn)圈數(shù)
       mode: 'ease-in-out' // 由快到慢 慣性效果都省了
     },
     cricleAdd: 1, // 第幾次抽獎(jiǎng)
     drawIndex: 0 // 中獎(jiǎng)索引 轉(zhuǎn)盤圖片排序 指針右手開(kāi)始 0-...
   }
 }
 // 計(jì)算屬性
 computed: {
   rotateStyle () {
     const _c = this.config
     return `
       -webkit-transition: transform ${_c.duration}ms ${_c.mode};
       transition: transform ${_c.duration}ms ${_c.mode};
       -webkit-transform: rotate(${this.rotateAngle}deg);
           transform: rotate(${this.rotateAngle}deg);`
   }
 }
 // 入?yún)?
 props: {
   httpData: {}, // 接口調(diào)用所需參數(shù)
   stateData: {
     type: Object,
     default: () => {
       return {
         coin: 0, // 超級(jí)幣數(shù)量
         prize_img: '' // 轉(zhuǎn)盤圖片
       }
     }
   }
 }

實(shí)現(xiàn)邏輯

  • 咱們要做的事情很簡(jiǎn)單,計(jì)算出中獎(jiǎng)獎(jiǎng)品的位置,輸出即可
  • 位置即對(duì)應(yīng)圈數(shù),drawIndex對(duì)應(yīng)獎(jiǎng)品位置,這個(gè)參數(shù)里面說(shuō)過(guò)了
this.rotateAngle = this.config.circle * 360 * this.cricleAdd - (22.5 + this.drawIndex * 45)
// 圈數(shù)位置解析
// this.config.circle * 360 * this.cricleAdd 順時(shí)針總?cè)?shù)/累積總?cè)?shù)
// 22.5 + this.drawIndex * 45 ===> (獎(jiǎng)品位置 === this.drawIndex * 45) (指針中間位置 === 22.5)
  • drawIndex,直接從服務(wù)端拿就行了,如果沒(méi)有跑出位置,自己可以計(jì)算一下
  • 為了方便拓展,拋出了兩個(gè)狀態(tài)對(duì)應(yīng)抽獎(jiǎng)的開(kāi)始于完成,start和fin
this.$emit('draw_fin', 'start')
this.$emit('draw_fin', 'fin')
  • 完整代碼,css就不水字?jǐn)?shù)了,下面附上源碼地址
  methods: {
      async run () {
        if (this.stateData.coin < 10) {
          console.log('超級(jí)幣不足')
          return
        }   
        if (this.isrun) return
        // const data = await this.goDraw()
        // 可以作為彈窗等信息展示
        this.$emit('draw_fin', 'start')
        this.$set(this.stateData, 'coin', 0) // 更新數(shù)據(jù),此處僅為示例,推薦使用 draw_fin方法的 start/fin 進(jìn)行相應(yīng)數(shù)據(jù)更新
        this.isrun = true
        this.rotateAngle = this.config.circle * 360 * this.cricleAdd - (22.5 + this.drawIndex * 45)
        // 圈數(shù)位置解析
        // this.config.circle * 360 * this.cricleAdd 順時(shí)針總?cè)?shù)/累積總?cè)?shù)
        // 22.5 + this.drawIndex * 45 ===> (獎(jiǎng)品位置 === this.drawIndex * 45) (指針中間位置 === 22.5)

    this.cricleAdd++
    setTimeout(() => {
      this.$emit('draw_fin', 'fin')
      this.isrun = false
    }, this.config.duration)
  },
  goDraw () {
    // 請(qǐng)求接口拿到中獎(jiǎng)商品
    // 加下自己項(xiàng)目的樣式 loading 用戶體驗(yàn)
    return new Promise(async (resolve, reject) => {
      // await 獎(jiǎng)品接口
      resolve({
        msg: '抽獎(jiǎng)明細(xì)'
      })
    })
  }

組件使用

使用

import dialWrap from '../../components/dial/dial.vue'
<dialWrap ref="dialWrap" :stateData="stateData"></dialWrap>

抽獎(jiǎng)效果

結(jié)語(yǔ)

以上就是大概的實(shí)現(xiàn)思路了,比較簡(jiǎn)單的效果;再細(xì)的一些東西以及拓展,大家可以自行發(fā)揮哈~

另附本文-源碼地址,歡迎探討哈~

以上就是VUE實(shí)現(xiàn)大轉(zhuǎn)盤抽獎(jiǎng)的詳細(xì)內(nèi)容,更多關(guān)于vue 大轉(zhuǎn)盤抽獎(jiǎng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue組件BootPage實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能

    Vue組件BootPage實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能

    這篇文章主要為大家詳細(xì)介紹了Vue小組件BootPage實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 解決Element中el-date-picker組件不回填的情況

    解決Element中el-date-picker組件不回填的情況

    這篇文章主要介紹了解決Element中el-date-picker組件不回填的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Vue中的echarts圖表如何實(shí)現(xiàn)loading效果

    Vue中的echarts圖表如何實(shí)現(xiàn)loading效果

    這篇文章主要介紹了Vue中的echarts圖表如何實(shí)現(xiàn)loading效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • VUEX?使用?mutations的兩種方式

    VUEX?使用?mutations的兩種方式

    這篇文章主要介紹了VUEX?使用?mutations的兩種方式,實(shí)現(xiàn)方式就是利用vuex中的mutations,在mutations中定義一個(gè)方法,這個(gè)方法就是把點(diǎn)擊的index(也就是每個(gè)列表的唯一標(biāo)識(shí)),傳給state中的當(dāng)前標(biāo)識(shí),需要的朋友可以參考下
    2023-01-01
  • vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼

    vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue項(xiàng)目base64字符串轉(zhuǎn)圖片的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Vue3?源碼分析reactive?readonly實(shí)例

    Vue3?源碼分析reactive?readonly實(shí)例

    這篇文章主要為大家介紹了Vue3?源碼分析reactive?readonly實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • vue配置多代理服務(wù)接口地址操作

    vue配置多代理服務(wù)接口地址操作

    這篇文章主要介紹了vue配置多代理服務(wù)接口地址操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • vue 詳情跳轉(zhuǎn)至列表頁(yè)實(shí)現(xiàn)列表頁(yè)緩存

    vue 詳情跳轉(zhuǎn)至列表頁(yè)實(shí)現(xiàn)列表頁(yè)緩存

    這篇文章主要介紹了vue 詳情跳轉(zhuǎn)至列表頁(yè)實(shí)現(xiàn)列表頁(yè)緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Vue.js中關(guān)于偵聽(tīng)器(watch)的高級(jí)用法示例

    Vue.js中關(guān)于偵聽(tīng)器(watch)的高級(jí)用法示例

    Vue.js 提供了一個(gè)方法 watch,它用于觀察Vue實(shí)例上的數(shù)據(jù)變動(dòng)。下面這篇文章主要給大家介紹了關(guān)于Vue.js中關(guān)于偵聽(tīng)器(watch)的高級(jí)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • vue3+elementPlus項(xiàng)目支持生成、設(shè)置默認(rèn)附件方式

    vue3+elementPlus項(xiàng)目支持生成、設(shè)置默認(rèn)附件方式

    這篇文章主要介紹了vue3+elementPlus項(xiàng)目支持生成、設(shè)置默認(rèn)附件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評(píng)論