zoukankan      html  css  js  c++  java
  • 效果——跑马灯抽奖

     

    跑马灯思路:1.沿顺时针转动,即不按照奖品的index,所以设置一个奖品序号数组,将顺时针转动时各个奖品的index置入这个数组。

          2.转动动画开始,若ajax请求到了奖品的序号,则转动停止在对应的奖品中,提示抽奖成功信息。若请求出错,则转动两圈后停止在动画开始最初位置,并提示错误。

            <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*/
  • 相关阅读:
    NOIP 2017逛公园(记忆化搜索)
    NOIP 2012疫情控制 (二分+倍增+贪心)
    NOIP 2005过河(DP+路径压缩)
    P1198 [JSOI2008]最大数
    [Noip2016]蚯蚓
    [六省联考2017]期末考试
    六省联考:组合数问题
    蒜头君的兔子
    bzoj1015 [JSOI2008]星球大战starwar
    luogu P3370 【模板】字符串哈希
  • 原文地址:https://www.cnblogs.com/manchun/p/4482954.html
Copyright © 2011-2022 走看看