最近公司在搞节日活动,进行抽奖活动,无奈奖品很诱人,但是都是摆设,在网上找了一下,又加上自己的改进
1.新建一个html页面,css样式,布局啥的,网上down的图片
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="keywords" content="jquery"/>
<meta name="description" content="抽奖大转盘"/>
<title>PHP+JQUERY实现抽奖大转盘</title>
<script type="text/javascript" src="../../../jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jQueryRotate.2.2.js"></script>
<script type="text/javascript" src="jquery.easing.min.js"></script>
<style type="text/css">
.demo{width:417px;height:417px;position:relative;margin:50px auto}
#disk{width:417px;height:417px;background:url(disk.jpg) no-repeat;}
#start{width:163px;height:320px;position:absolute;top:46px;left:130px;}
#start img{cursor:pointer}
</style>
<script type="text/javascript">
$(function(){
$("#startbtn").click(function(){
lottery();
});
});
function lottery(){
$.ajax({
type:'POST',
url:'data.php',
dataType:'json',
cache:false,
error:function(){
alert('出错啦!');
return false;
},
success:function(json){
$("#startbtn").unbind('click').css("cursor","default");
var a = json.angle; //角度
var p = json.prize; //奖项
$("#startbtn").rotate({
duration:3000, //转动时间
angle: 0,
animateTo:1800+a, //转动角度
easing: $.easing.easeOutSine,
callback: function(){
var con = confirm('恭喜你,中得'+p+'\n还要再来一次吗?');
if(con){
lottery();
}else{
return false;
}
}
});
}
});
}
</script>
</head>
<body>
<div class="demo">
<div id="disk"></div>
<div id="start"><img src="start.png" id="startbtn"></div>
</div>
</body>
</html>
2.php程序处理页
<?php
$prize_arr=array(
'0'=>array('id'=>1,'min'=>1,'max'=>29,'prize'=>'一等奖','v'=>1),
'1'=>array('id'=>2,'min'=>302,'max'=>328,'prize'=>'二等奖','v'=>2),
'2' => array('id'=>3,'min'=>242,'max'=>268,'prize'=>'三等奖','v'=>5),
'3' => array('id'=>4,'min'=>182,'max'=>208,'prize'=>'四等奖','v'=>7),
'4' => array('id'=>5,'min'=>122,'max'=>148,'prize'=>'五等奖','v'=>10),
'5' => array('id'=>6,'min'=>62,'max'=>88,'prize'=>'六等奖','v'=>25),
'6' => array('id'=>7,'min'=>array(32,92,152,212,272,332),
'max'=>array(58,118,178,238,298,358),'prize'=>'七等奖','v'=>50)
);
//概率函数
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;
}
foreach($prize_arr as $key=>$val){
$arr[$val['id']]=$val['v'];
}
$id=getRand($arr);//根据概率获取奖项id
$res=$prize_arr[$id-1];
$min=$res['min'];
$max=$res['max'];
if($res['id']==7){
$i=mt_rand(0,5);
$result['angle']=mt_rand($min[$i],$max[$i]);
}else{
$result['angle']=mt_rand($min,$max);
}
$result['prize']=iconv('gb2312','UTF-8',$res['prize']);
echo json_encode($result);
exit;
?>
原文链接:http://www.helloweba.com/view-blog-215.html