基於JQuery+PHP編寫砸金蛋中獎程式_php執行個體

來源:互聯網
上載者:User

首先給大家展示效果圖:

查看示範 下載源碼

準備工作

我們需要準備道具(素材),即相關圖片,包括金蛋圖片、蛋砸碎後的圖片、砸碎後的碎花圖片、以及鎚子圖片。

HTML

我們頁面上要展現的是一個砸金蛋的檯子,台上放了編號為1,2,3的三個金蛋,以及一把鎚子。我們構建以下html代碼:

<div class="egg">  <ul class="eggList">  <p class="hammer" id="hammer">鎚子</p>  <p class="resultTip" id="resultTip"><b id="result"></b></p>  <li><span>1</span><sup></sup></li>  <li><span>2</span><sup></sup></li>  <li><span>3</span><sup></sup></li>  </ul> </div> 

上述代碼中,.hammer放置鎚子,.resultTip用於砸蛋後顯示的結果,即有沒有中獎,三個li分別放置3個金蛋,我們用CSS來裝飾下效果。

CSS

.egg{width:660px; height:400px; margin:50px auto 20px auto;} .egg ul li{z-index:999;} .eggList{padding-top:110px;position:relative;width:660px;} .eggList li{float:left;background:url(images/egg_1.png) no-repeat bottom;width:158px; height:187px;cursor:pointer;position:relative;margin-left:35px;} .eggList li span{position:absolute; width:30px; height:60px; left:68px; top:64px; color:#ff0;  font-size:42px; font-weight:bold} .eggList li.curr{background:url(images/egg_2.png) no-repeat bottom;cursor:default;z-index:300;} .eggList li.curr sup{position:absolute;background:url(images/img-4.png) no-repeat;width:232px; height:181px;top:-36px;left:-34px;z-index:800;} .hammer{background:url(images/img-6.png) no-repeat;width:74px;height:87px;position:absolute; text-indent:-9999px;z-index:150;left:168px;top:100px;} .resultTip{position:absolute; background:#ffc ;width:148px;padding:6px;z-index:500;top:200px; left:10px; color:#f60; text-align:center;overflow:hidden;display:none;z-index:500;} .resultTip b{font-size:14px;line-height:24px;}

按照上面的代碼我們可以在頁面中看到一個完整的砸金蛋情境,注意我們使用了png圖片,如果你的客戶仍在使用ie6的話,你可能需要對png圖片的透明做處理,本文不做處理。

jQuery

接下來,我們要用jQuery代碼來實現砸金蛋、碎蛋、展示中獎結果的整個過程。當然,老規矩,對於才用jQuery實現的執行個體程式,你必須先載入jQuery庫檔案。

首先,當滑鼠滑向金蛋時,用於砸金蛋的鎚子會僅靠金蛋右上方,可以使用position()來定位。

$(".eggList li").hover(function() {  var posL = $(this).position().left + $(this).width();  $("#hammer").show().css('left', posL); }) 

然後,點擊金蛋,即揮動鎚子砸向金蛋的過程。我們在click中先把金蛋中的編號數字隱藏,然後調用自訂函數eggClick()。

$(".eggList li").click(function() {  $(this).children("span").hide();  eggClick($(this)); }); 

最後,在自訂函數eggClick()中,我們使用jQuery的$.getJSON方法向後台data.php發送一個ajax請求,後台php程式會處理獎項分配並把中獎結果返回。我們使用animate()來實現砸鎚子的動畫,通過改變鎚子的top和left位子來實現簡單的動畫效果,鎚子砸下去後,金蛋樣式變為.curr,同時金花四濺,然後中獎結果.resultTip展示,有沒有中獎要看你的運氣和後台獎項設定的中獎幾率了。來看砸金蛋函數eggClick()的代碼:

function eggClick(obj) {  var _this = obj;  $.getJSON("data.php",function(res){//ajax請求  _this.unbind('click'); //解除click  $(".hammer").css({"top":_this.position().top-55,"left":_this.position().left+185});  $(".hammer").animate({//鎚子動畫  "top":_this.position().top-25,  "left":_this.position().left+125  },30,function(){  _this.addClass("curr"); //蛋碎效果  _this.find("sup").show(); //金花四濺  $(".hammer").hide();//隱藏鎚子  $('.resultTip').css({display:'block',top:'100px',left:_this.position().  left+45,opacity:0})  .animate({top: '50px',opacity:1},300,function(){//中獎結果動畫   if(res.msg==1){//返回結果   $("#result").html("恭喜,您中得"+res.prize+"!");   }else{   $("#result").html("很遺憾,您沒能中獎!");   }  });  }  );  }); } 

為了將砸金蛋程式更真實的結合到你的網站中,你可以在砸蛋前驗證會員身份,限制砸蛋次數、砸蛋中獎後留下連絡方式等等措施,具體看網站需求了。

PHP

data.php處理前端發送的ajax請求,我們才用機率演算法,根據設定好的中獎機率,將中獎結果以json的格式輸出。關於機率計算的例子可以參照:PHP+jQuery實現翻板抽獎

$prize_arr = array(  '0' => array('id'=>1,'prize'=>'平板電腦','v'=>3),  '1' => array('id'=>2,'prize'=>'數位相機','v'=>5),  '2' => array('id'=>3,'prize'=>'音箱裝置','v'=>10),  '3' => array('id'=>4,'prize'=>'4G優盤','v'=>12),  '4' => array('id'=>5,'prize'=>'Q幣10元','v'=>20),  '5' => array('id'=>6,'prize'=>'下次沒準就能中哦','v'=>50), ); foreach ($prize_arr as $key => $val) {  $arr[$val['id']] = $val['v']; } $rid = getRand($arr); //根據機率擷取獎項id $res['msg'] = ($rid==6)?0:1; //如果為0則沒中 $res['prize'] = $prize_arr[$rid-1]['prize']; //中獎項 echo json_encode($res); //計算機率 function getRand($proArr) {  $result = '';  //機率數組的總機率精度  $proSum = array_sum($proArr);  //機率數組迴圈  foreach ($proArr as $key => $proCur) {  $randNum = mt_rand(1, $proSum);  if ($randNum <= $proCur) {  $result = $key;  break;  } else {  $proSum -= $proCur;  }  }  unset ($proArr);  return $result; }

通過設定機率,我們可以看出,砸中平板電腦的幾率佔3%,砸不中的幾率佔50%,點擊示範demo來試試你的運氣吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.