幸運大抽獎


幸運大抽獎全新來襲,現在普遍的抽獎活動都是由flash開發的,然而,今天向大家展示由js實現的抽獎。早在2012年的時候寫過一篇文章關於js抽獎的《javascript 抽獎》 。  

借助raphaeljs插件實現,官網:http://raphaeljs.com          中文文檔: http://lab.julying.com/raphael-js/docs/                                  

幸運大抽獎已兩種方式展現,一種是圓盤旋轉(獵豹式),另一種是指針旋轉(考拉式),實現抽獎三部曲。

第一部:繪制圓盤和指針。

var r = Raphael("test",300,300);
// 繪制圓盤
r.image("pan.jpg",0,0,300,300);
// 繪制指針
r.image("pointer.png",145,0,10,150);

 

第二部:圓盤旋轉(獵豹式)。

btn.click(function(){
    // 清空中獎結果
    result.html("");  
    // 清空畫布
    r.clear();
    // 重新繪制圓盤和指針
    pan = r.image(pic,0,0,300,300);
    r.image(pointer,145,0,10,150);
    // 選中角度
    var angle = -parseInt(Math.random()*3000+6000);
    // 中獎結果
    var tmp = Math.abs(parseInt(((angle-30)%360)/60))+1;
    pan.animate({transform: "r" + angle}, 1000, ">",function(){
         result.html("恭喜您獲得"+tmp+"獎");
    });
});

 


第三部:指針旋轉(考拉式)。

btn.click(function(){
    // 清空中獎結果
    result.html("");
    // 設置暫停、計數、角度、中獎結果
    var stop=null,
        index = 0,
        angle= parseInt(Math.random()*360),
        tmp =Math.abs(parseInt(((angle+30)%360)/60))+1;
    // 清空畫布,重新繪制圓盤和指針
    r.clear();
    r.image(pic,0,0,300,300);
    point = r.image(pointer,145,0,10,150);
    // 中獎結果
    stop = setInterval(function(){
        index++;
        if(index>=angle){
            clearInterval(stop); 
            result.html("恭喜您獲得"+tmp+"獎");
        }
        point.rotate(1,150,150);  
    },100);
});


用到raphaeljs中五個方法有image、animate、transform、rotate、clear,搞定。

生活版:抽獎圓盤式先加速中急速后減速的效果。感興趣的朋友可以改進以上的代碼,用到實際項目中。




DEMO:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM