我在我网上下载了一个幸运转盘的html   想把里面的转盘功能单独扣出来  但是不JS不太懂   求个高手
可以加我QQ:106347857jshtmlqq

解决方案 »

  1.   

    <div class="window" id="windowcenter" style="display: none;">
    <div id="title" class="title">消息提醒<span class="close" id="alertclose"></span></div>
    <div class="content">
     <div id="txt">亲,继续努力哦!</div>
     <input type="button" value="确定" id="windowclosebutton" name="确定" class="txtbtn">
    </div>
    </div>
     
     <div id="outercont">
    <div id="outer-cont">
    <div id="outer" style="-webkit-transform: rotate(1956deg);"><img src="activity-lottery-3.png"></div>
    </div>
    <div id="inner-cont">
    <div id="inner"><img src="activity-lottery-2.png"></div>
    </div>
    </div>
    <div class="content">
    <div class="boxcontent boxyellow" id="result" style="display:none">
    <div class="box">
    <div class="title-orange"><span>恭喜你中奖了</span></div>
    <div class="Detail">
           
    <p>你中了:<span class="red" id="prizetype">   </span></p>
                        <p>兑奖SN码:<span class="red" id="sncode"></span></p>
                      <p class="red" id="red">本次兑奖码已经关联你的微信号,你可向公众号发送【大转盘】进行查询!  </p>
                       <p> <input name="" class="px" id="tel" value="" type="text" placeholder="用户请输入您的手机号">  </p> 
                    
                     <p>
                    
                    
                    
    </p><p>
    <input class="pxbtn" name="提 交" id="save-btn" type="button" value="用户提交">
    </p>
                  
                    
                     
                    
                         
                        
                        <p>
                     
    <input name="" class="px" id="parssword" type="password" value="" placeholder="商家输入兑奖密码">
    </p>
                    
    <p>
    <input class="pxbtn" name="提 交" id="save-btnn" type="button" value="商家提交">
    </p>
                                     </div>
    </div>
    </div>
    <div class="boxcontent boxyellow">
    <div class="box">
    <div class="title-green"><span>奖项设置:</span></div>
                
                <div class="Detail">
                
                 
    <p>一等奖: iphone6。奖品数量:10 </p>           
    <p>二等奖: ipad6 。奖品数量:20  </p><p>三等奖: ipad mini 3 。奖品数量:100  </p>                                                 </div>
    </div>
    </div>
    <div class="boxcontent boxyellow">
    <div class="box">
    <div class="title-green">活动说明:</div>
    <div class="Detail">
                     <p class="red">本次活动总共可以转3次转盘!你已经转了1次 </p>
                                   <p>   亲,请点击进入大转盘抽奖活动页面,祝您好运哦!  </p>
    </div>
    </div>
    </div>
    </div></div>
    <script type="text/javascript">
    $(function() {
        window.requestAnimFrame = (function() {
            return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
            function(callback) {
                window.setTimeout(callback, 1000 / 60)
            }
        })();
        var totalDeg = 360 * 3 + 0;
        var steps = [];
        var lostDeg = [36, 96, 156, 216, 276,336];
        var prizeDeg = [6, 66, 126,186,246,306];
        var prize, sncode;
        var count = 0;
        var now = 0;
        var a = 0.01;
        var outter, inner, timer, running = false;
        function countSteps() {
            var t = Math.sqrt(2 * totalDeg / a);
            var v = a * t;
            for (var i = 0; i < t; i++) {
                steps.push((2 * v * i - a * i * i) / 2)
            }
            steps.push(totalDeg)
        }
        function step() {
            outter.style.webkitTransform = 'rotate(' + steps[now++] + 'deg)';
            outter.style.MozTransform = 'rotate(' + steps[now++] + 'deg)';
            if (now < steps.length) {
    running = true;
                requestAnimFrame(step)
            } else {
                running = false;
                setTimeout(function() {
                    if (prize != null) {
                        $("#sncode").text(sncode);
                        var type = "";
                        if (prize == 1) {
                            type = "一等奖"
                        } else if (prize == 2) {
                            type = "二等奖"
                        } else if (prize == 3) {
                            type = "三等奖"
                        }                    $("#prizetype").text(type);
                        $("#result").slideToggle(500);
                        $("#outercont").slideUp(500)
                    } else {
                        alert("亲,继续努力哦!")
                    }
                },
                200)
            }
        }
        function start(deg) {
            deg = deg || lostDeg[parseInt(lostDeg.length * Math.random())];
            running = true;
            clearInterval(timer);
            totalDeg = 360 * 5 + deg;
            steps = [];
            now = 0;
            countSteps();
            requestAnimFrame(step)
        }
        window.start = start;
        outter = document.getElementById('outer');
        inner = document.getElementById('inner');
        i = 10;
        $("#inner").click(function() {
       
             if (running) return;
            if (count >= 3) {
                alert("您已经抽了 3 次奖,不能再抽了,下次再来吧!");
                return
            }
            if (prize != null) {
                alert("亲,你不能再参加本次活动了喔!下次再来吧~");
                return
            }
            $.ajax({
                url: "index.php",
                dataType: "json",
                data: {
                    token: "o7MB9jlClHsbd5OdXsQS6K8lmADA",
                    ac: "activityuser",
                    tid: "387",
                    t: Math.random()
                },
                beforeSend: function() {
                    running = true;
                    timer = setInterval(function() {
                        i += 5;
                        outter.style.webkitTransform = 'rotate(' + i + 'deg)';
                        outter.style.MozTransform = 'rotate(' + i + 'deg)'
                    },
                    1)
                },
                success: function(data) {
                    if (data.error == "invalid") {
                        alert(data.msg);
                        count = 3;
                        clearInterval(timer);
                        return
                    }
                    if (data.error == "getsn") {                    $("#tel").val(data.tel);
    if(data.state==2){
    $("#closedj").css("display","none");}
    $("#red").text(data.msg);
                        alert(data.msg + data.sn);
                        count = 3;
                        clearInterval(timer);
                        prize = data.prizetype;
                        sncode = data.sn;
                        start(prizeDeg[data.prizetype - 1]);
                        return
                    }
                    if (data.success) {
                        prize = data.prizetype;
                        sncode = data.sn;
                        start(prizeDeg[data.prizetype - 1])
                    } else {
                        prize = null;
                        start()
                    }
                    running = false;
                    count++
                },
                error: function() {
                    prize = null;
                    start();
                    running = false;
                    count++
                },
                timeout: 1000
            })
        })
    });</script>
    我在后台计算了概率  想知道把参数传到哪里控制转盘的停留位置
      

  2.   

    给id为inner的控件添加了click事件了。。  $("#inner").click(function () {,然后ajax请求动态页获取角度,调用start方法如果是其他控件触发ajax,那么在ajax的success回调中调用start方法就行了,参数为deg,应该是角度,具体是什么值就不清楚了,应该0~360度之间的值
            function start(deg) {
                deg = deg || lostDeg[parseInt(lostDeg.length * Math.random())];
                running = true;
                clearInterval(timer);
                totalDeg = 360 * 5 + deg;
                steps = [];
                now = 0;
                countSteps();
                requestAnimFrame(step)
            }
            window.start = start;start(30)
      

  3.   

    start函数是关键:    function start(deg) {
            deg = deg || lostDeg[parseInt(lostDeg.length * Math.random())];
            running = true;
            clearInterval(timer);
            totalDeg = 360 * 5 + deg;//转盘总共转动的度数
            ......
        }大概看了下,源码中是没有给start传参的,所以函数里的deg都是随机生成的,所以最后转盘转动的度数也会随机。如果给start传参,转盘的转动的度数就会确定(即你穿的角度+360*5),那么位置也就确定了。
      

  4.   

    调用start函数啊,参数就是你得到的角度