幸運大抽獎全新來襲,如今廣泛的抽獎活動都是由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