php+jqueryRotate实现大转盘抽奖
2014-12-10 11:30
323 查看
思路:点击抽检执行ajax请求,由data.php计算中奖项,把抽检结果项传递给前端页面提示中奖结果。(get_rand()概率算法可参考http://blog.csdn.net/dongsg11200/article/details/24607877,前端特效参考http://www.helloweba.com/view-blog-216.html)
data.php文件
<?php
//定义抽奖项
$prize_arr=array(
'0' => array('id'=>1,'min'=>137,'max'=>178,'prize'=>'一等奖','v'=>9984),
'1' => array('id'=>2,'min'=>227,'max'=>268,'prize'=>'二等奖','v'=>5),
'2' => array('id'=>3,'min'=>1,'max'=>44,'prize'=>'三等奖','v'=>10),
'3' => array('id'=>4,'min'=>array(47,92,182,272,317),'max'=>array(88,133,223,313,358),'prize'=>'再接再励,下次可能中奖哦!','v'=>1),
);
foreach($prize_arr as $k=>$v){
$varr[$v['id']] = $v['v'];
}
//根据概率获取中奖id
$rid = get_rand($varr);
//中奖项
$rs = $prize_arr[$rid-1];
$min = $rs['min'];
$max = $rs['max'];
//判断¥rs的id是否是3,(判断min和max是否是数组)
if($rs['id']=='4'){
$i = mt_rand(0,4);
$result['angle'] = mt_rand($min[$i],$max[$i]);
}else{
$result['angle'] = mt_rand($min,$max);
}
$result['prize'] = iconv('gb2312','utf-8',$rs['prize']);
$result['rid']=$rs['id'];
echo json_encode($result);
//概率算法
function get_rand($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;
}
?>index.hrml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>抽奖插件前端制作</title>
</head>
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
body{text-align: center; background-color: #1664ad;}
#main_bg{border:0px solid black;width:510px; margin:0 auto;}
#rotate-bg{position:relative; background:url(images/rotate_bg.png) no-repeat; height:510px; width:510px; margin:0 auto;}
#rotate_static{position:absolute; top:148px; left:148px; cursor:pointer;}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jqueryrotate.2.2.js"></script>
<script type="text/javascript" src="js/jquery.easing.min.js"></script>
<script type="text/javascript">
$(function(){
$("#imgbutton").click(function(){
sub();
});
});
function sub(){
$.ajax({
type:'POST',
url:'check.php',
dataType:'json',
cache:false,
error:function(){
alert('出错了');
return false;
},
success:function(rs){
$("#imgbutton").unbind('click').css('cursor','default');
var a = rs.angle;//角度
var p = rs.prize; //奖项
var rid = rs.rid;
$("#imgbutton").rotate({
duration:5000,//转动时间
angle:0,
animateTo:1800+a, //转动角度
easing: $.easing.easeOutSine,
callback: function(){
if(rid != 4){
var con = confirm('恭喜你,中得'+p+'请在跳转后填写个人信息,以便于我们给你发送奖品!');
if(con){
window.location('www.talkforex.com');
}else{
return false;
}
}else{
var con = confirm('很遗憾,下次有可能中奖哦!');
if(con){
sub();
}else{
return false;
}
}
}
});
}
});
}
</script>
<body>
<div id="main_bg">
<div id="rotate-bg">
<div id="rotate_static"><img id="imgbutton" src="images/rotate_static.png"/></div>
</div>
</div>
</body>
</html>
data.php文件
<?php
//定义抽奖项
$prize_arr=array(
'0' => array('id'=>1,'min'=>137,'max'=>178,'prize'=>'一等奖','v'=>9984),
'1' => array('id'=>2,'min'=>227,'max'=>268,'prize'=>'二等奖','v'=>5),
'2' => array('id'=>3,'min'=>1,'max'=>44,'prize'=>'三等奖','v'=>10),
'3' => array('id'=>4,'min'=>array(47,92,182,272,317),'max'=>array(88,133,223,313,358),'prize'=>'再接再励,下次可能中奖哦!','v'=>1),
);
foreach($prize_arr as $k=>$v){
$varr[$v['id']] = $v['v'];
}
//根据概率获取中奖id
$rid = get_rand($varr);
//中奖项
$rs = $prize_arr[$rid-1];
$min = $rs['min'];
$max = $rs['max'];
//判断¥rs的id是否是3,(判断min和max是否是数组)
if($rs['id']=='4'){
$i = mt_rand(0,4);
$result['angle'] = mt_rand($min[$i],$max[$i]);
}else{
$result['angle'] = mt_rand($min,$max);
}
$result['prize'] = iconv('gb2312','utf-8',$rs['prize']);
$result['rid']=$rs['id'];
echo json_encode($result);
//概率算法
function get_rand($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;
}
?>index.hrml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>抽奖插件前端制作</title>
</head>
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
body{text-align: center; background-color: #1664ad;}
#main_bg{border:0px solid black;width:510px; margin:0 auto;}
#rotate-bg{position:relative; background:url(images/rotate_bg.png) no-repeat; height:510px; width:510px; margin:0 auto;}
#rotate_static{position:absolute; top:148px; left:148px; cursor:pointer;}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jqueryrotate.2.2.js"></script>
<script type="text/javascript" src="js/jquery.easing.min.js"></script>
<script type="text/javascript">
$(function(){
$("#imgbutton").click(function(){
sub();
});
});
function sub(){
$.ajax({
type:'POST',
url:'check.php',
dataType:'json',
cache:false,
error:function(){
alert('出错了');
return false;
},
success:function(rs){
$("#imgbutton").unbind('click').css('cursor','default');
var a = rs.angle;//角度
var p = rs.prize; //奖项
var rid = rs.rid;
$("#imgbutton").rotate({
duration:5000,//转动时间
angle:0,
animateTo:1800+a, //转动角度
easing: $.easing.easeOutSine,
callback: function(){
if(rid != 4){
var con = confirm('恭喜你,中得'+p+'请在跳转后填写个人信息,以便于我们给你发送奖品!');
if(con){
window.location('www.talkforex.com');
}else{
return false;
}
}else{
var con = confirm('很遗憾,下次有可能中奖哦!');
if(con){
sub();
}else{
return false;
}
}
}
});
}
});
}
</script>
<body>
<div id="main_bg">
<div id="rotate-bg">
<div id="rotate_static"><img id="imgbutton" src="images/rotate_static.png"/></div>
</div>
</div>
</body>
</html>
相关文章推荐
- 使用jQuery+PHP+Mysql实现抽奖程序
- PHP+jQuery实现翻板抽奖
- 使用jQuery+PHP+Mysql实现抽奖程序
- PHP大转盘抽奖简单实现例子
- 使用jQuery+PHP+Mysql实现抽奖程序
- 基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
- 使用jQuery+PHP+Mysql实现抽奖程序
- 使用jQuery+PHP+Mysql实现抽奖程序
- JS利用CSS3 transform rotate 实现旋转转盘或背景(大转盘抽奖)
- 使用jQuery+PHP+Mysql实现抽奖程序
- jQuery实现大转盘抽奖活动仿QQ音乐代码分享
- jQuery+PHP+Mysql实现抽奖程序
- 用jQuery和PHP来实现转盘抽奖程序
- 利用jQueryRotate旋转插件开发大转盘抽奖
- 用jQuery和PHP来实现微信转盘抽奖程序 附源代码
- jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
- Canvas + jqueryRotate实现抽奖大转盘
- jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现
- jquery.rotate插件实现抽奖的旋转效果