效果——跑馬燈抽獎

 

跑馬燈思路:1.沿順時針轉動,即不按照獎品的index,因此設置一個獎品序號數組,將順時針轉動時各個獎品的index置入這個數組。javascript

      2.轉動動畫開始,若ajax請求到了獎品的序號,則轉動中止在對應的獎品中,提示抽獎成功信息。若請求出錯,則轉動兩圈後中止在動畫開始最初位置,並提示錯誤。html

        <div class="con-center">
          <ul class="prize-area ">
            <li class="prize active"><img src="../images/prize1.jpg" alt=""><p class="prize-name">板磚</p></li>
            <li class="prize"><img src="../images/prize2.jpg" alt=""><p class="prize-name">紅酒</p></li>
            <li class="prize"><img src="../images/prize3.jpg" alt=""><p class="prize-name">話費點X1</p></li>
            <li class="prize"><img src="../images/prize4.jpg" alt=""><p class="prize-name">會員月卡</p></li>
            <li class="prize"><img src="../images/prize5.jpg" alt=""><p class="prize-name">300遊戲幣</p></li>
            <li class="btn-list"><a class="btn btn-lottery" href="javascript:;"></a></li>
            <li class="prize"><img src="../images/prize6.jpg" alt=""><p class="prize-name">雞蛋</p></li>
            <li class="prize"><img src="../images/prize7.jpg" alt=""><p class="prize-name">玫瑰</p></li>
            <li class="prize"><img src="../images/prize8.jpg" alt=""><p class="prize-name">拖鞋</p></li>
            <li class="prize"><img src="../images/prize9.jpg" alt=""><p class="prize-name">500遊戲幣</p></li>
            <li class="prize"><img class="png" src="../images/prize10.jpg" alt=""><p class="prize-name">小喇叭</p></li>
          </ul>
          <p class="lottery dv">個人抽獎次數: <span id="num"> 5 </span>[<a href="">得到更多抽獎機會</a>]</p>
          <p class="coupon">我有<i id="totalCoupon">30000000</i>兌換券,每次抽獎消耗<i id="couponNum"> 20</i>兌換券</p>
        </div>
<script type="text/javascript">
var oPageUrl = {
  lottery: '/lottery'//抽獎url
};
var islogin = true;
// 當前用戶抽獎總次數
var lotteryTotal = 3;
</script>

 

 var ui = {};
 ui. $lotteryBtn: $('.btn-lottery');
 ui.$num: $('#num');
 ui.$prize: $('.prize');
 ui. $totalCoupon: $('#totalCoupon');
 ui.$couponNum: $('#couponNum');

 

            /* 抽獎 */
            var len = ui.$prize.length  //獎品個數
                , j = 0 // 獎品序號數組的下標
                , prizeTime = null // 抽獎輪播定時器
                , array = [0, 1, 2, 3, 5, 9, 8, 7, 6, 4] // 獎品序號數組
                , tag = false  // 監聽必定的時間
                , t = undefined // 中獎獎品序號
                , circleTime = 2000
                , changeTime = 100
                , i = 0
                , message = '';
            ui.$lotteryBtn.on('click', function () {
                j = 0;
                t = undefined;
                tag = false;
                if (islogin) {
                    if (prizeTime) {
                        return;
                    }
                    if (lotteryTotal > 0) {
                        var totalCoupon = parseInt(ui.$totalCoupon.text())
                            , couponNum = parseInt(ui.$couponNum.text());
                        changePrize();
                        setTimeout(circlePrize, circleTime);
                        $.ajax({
                            url: oPageUrl.lottery
                            , dataType: 'json'
                            , data: {}
                            , type: "POST"
                        }).done(function (msg) {
                            // msg.code = 1;
                            if (msg.code == 0) {
                                t = parseInt(msg.data.position)-1;
                                message = msg.message;
                                ui.$totalCoupon.text(totalCoupon - couponNum);
                            } else {
                                clearTimeout(prizeTime);
                                prizeTime = null;
                                ui.$lotteryFailBox.find(".title span").eq(1).html(msg.message);
                                self.fshowFailBox(true);
                            }
                        });
                    } else {
                        ui.$lotteryFailBox.find(".title span").eq(1).html("對不起,您沒有抽獎機會!");
                        self.fshowFailBox(true);
                    }
                } else {
                    self.fshowLoginBox(true);
                }
            });
            function changePrize() {
                j++;
                j = j % len;
                ui.$prize.removeClass('active').eq(array[j]).addClass('active');
                if (tag == true && array[j] == t) {
                    self.fshowSucBox(true, message);
                    clearTimeout(prizeTime);
                    prizeTime = null;
                    return;
                }
                prizeTime = setTimeout(changePrize, changeTime);
            }
            function circlePrize() {
                if (t == undefined) {
                    if (circleTime > 400) {
                        circleTime = circleTime / 2;
                    }
                    setTimeout(circlePrize, circleTime);
                } else {
                    tag = true;
                }
            }
            /* 抽獎 end*/
相關文章
相關標籤/搜索