幸運大抽獎

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

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

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

第一部:繪製圓盤和指針。javascript

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

 

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

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+"獎");
    });
});

 


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

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,搞定。

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




DEMO:dom

ui

spa

相關文章
相關標籤/搜索