http://www.thinkphp.cn/code/1153.html

网上转盘抽奖程序大多是flash完成的,而本文使用jQuery和PHP来实现转盘抽奖程序。

若是想看更多js特效、网站源码、 js教程请访问 http://www.sucaihuo.com/js 还有演示DEMO,最主要是可以免费下载。

  1. 首先要准备两张图片,即圆盘和指针,然后我们在#disk来放置圆盘背景图片,在css中控制,用#start来放置指针图片start.png。
  2. <div id="disk"></div>
  3. <div id="start"><img src="data:images/start.png" id="startbtn" alt="转盘开启"/></div>
  4. CSS指针和圆盘样式如下:
  5. #disk{width:417px; height:417px; background:url(images/disk.jpg) no-repeat}
  6. #start{width:163px; height:320px; position:absolute; top:46px; left:130px;}
  7. #start img{cursor:pointer}
  8. 接着我们引入jquery.js、旋转插件jQueryRotate.2.2.js及动画easing插件jquery.easing.min.js。easing 教程我们已经讲过了,jQuery Easing动画插件。
  9. <script type = "text/javascript" src = "jquery.js" > </script>
  10. <script type = "text/javascript" src = "jQueryRotate.2.2.js"></script>
  11. <script type = "text/javascript" src = "jquery.easing.min.js"></script>
  12. 最后通过jQueryRotate.js旋转插件,我们让指针转起来。
  13. $(function() {
  14. $("#startbtn").rotate({
  15. bind: {
  16. click: function() {
  17. var random = Math.floor(Math.random() * 360); //生成随机数
  18. $(this).rotate({
  19. duration: 3000,
  20. //转动时间间隔(速度单位ms)
  21. angle: 0,
  22. //指针开始角度
  23. animateTo: 3600 + random,
  24. //转动角度,当转动角度到达3600+random度时停止转动。
  25. easing: $.easing.easeOutSine,
  26. //easing动画效果
  27. callback: function() { //回调函数
  28. alert('恭喜您,中奖了!');
  29. }
  30. });
  31. }
  32. }
  33. });
  34. });
  35. 下面介绍使用PHP来控制抽奖几率,以及完成两者之间的交互:
  36. 首先,在ajax.php中创建一个奖项对应角度和中奖几率二维数组:
  37. $prize_arr = array(
  38. '0' => array('id' => 1, 'min' => 1, 'max' => 29, 'prize' => '一等奖', 'v' => 1),
  39. '1' => array('id' => 2, 'min' => 302, 'max' => 328, 'prize' => '二等奖', 'v' => 2),
  40. '2' => array('id' => 3, 'min' => 242, 'max' => 268, 'prize' => '三等奖', 'v' => 5),
  41. '3' => array('id' => 4, 'min' => 182, 'max' => 208, 'prize' => '四等奖', 'v' => 7),
  42. '4' => array('id' => 5, 'min' => 122, 'max' => 148, 'prize' => '五等奖', 'v' => 10),
  43. '5' => array('id' => 6, 'min' => 62, 'max' => 88, 'prize' => '六等奖', 'v' => 25),
  44. '6' => array('id' => 7, 'min' => array(32, 92, 152, 212, 272, 332),
  45. 'max' => array(58, 118, 178, 238, 298, 358), 'prize' => '七等奖', 'v' => 50)
  46. //min数组表示每个个奖项对应的最小角度 max表示最大角度
  47. //prize表示奖项内容,v表示中奖几率(若数组中七个奖项的v的总和为100,如果v的值为1,则代表中奖几率为1%,依此类推)
  48. );
  49. 中奖概率方法我们之前在jQuery砸金蛋_PHP砸金蛋讲过,代码如下
  50. function getRand($proArr) {
  51. $data = '';
  52. $proSum = array_sum($proArr); //概率数组的总概率精度
  53. foreach ($proArr as $k => $v) { //概率数组循环
  54. $randNum = mt_rand(1, $proSum);
  55. if ($randNum <= $v) {
  56. $data = $k;
  57. break;
  58. } else {
  59. $proSum -= $v;
  60. }
  61. }
  62. unset($proArr);
  63. return $data;
  64. }
  65. 函数getRand()会根据数组中设置的几率计算出符合条件的id,我们可以接着调用getRand()。
  66. foreach ($prize_arr as $v) {
  67. $arr[$v['id']] = $v['v'];
  68. }
  69. $prize_id = getRand($arr); //根据概率获取奖项id
  70. $res = $prize_arr[$prize_id - 1]; //中奖项
  71. $min = $res['min'];
  72. $max = $res['max'];
  73. if ($res['id'] == 7) { //七等奖
  74. $i = mt_rand(0, 5);
  75. $data['angle'] = mt_rand($min[$i], $max[$i]);
  76. } else {
  77. $data['angle'] = mt_rand($min, $max); //随机生成一个角度
  78. }
  79. $data['prize'] = $res['prize'];
  80. echo json_encode($data);
  81. 接着点击”开始抽奖“按钮,便会向后台ajax.php请求并返回奖项信息,这时指针开始转动,指针最终停留位置是由ajax.php返回值angle 来决定的,这样我们就可以控制概率和前端指针转动停留位置。代码如下:
  82. $(function() {
  83. $("#startbtn").click(function() {
  84. lottery();
  85. });
  86. });
  87. function lottery() {
  88. $.ajax({
  89. type: 'POST',
  90. url: 'ajax.php',
  91. dataType: 'json',
  92. cache: false,
  93. error: function() {
  94. alert('Sorry,出错了!');
  95. return false;
  96. },
  97. success: function(json) {
  98. $("#startbtn").unbind('click').css("cursor", "default");
  99. var angle = json.angle; //指针角度
  100. var prize = json.prize; //中奖奖项标题
  101. $("#startbtn").rotate({
  102. duration: 3000,//转动时间 ms
  103. angle: 0, //从0度开始
  104. animateTo: 3600 + angle,//转动角度
  105. easing: $.easing.easeOutSine, //easing扩展动画效果
  106. callback: function() {
  107. var resulte = confirm('恭喜您中得' + prize + '\n想要继续吗?');
  108. if (resulte) { //若是点击确定,继续抽奖
  109. lottery();
  110. }
  111. }
  112. });
  113. }
  114. });
  115. }
复制代码

查看该特效演示及免费下载,请访问http://www.sucaihuo.com/js/19.html

转载于:https://www.cnblogs.com/qq350760546/p/5412760.html

jQuery幸运大转盘_jQuery+PHP抽奖程序相关推荐

  1. php大转盘程序,jQuery幸运大转盘_jQuery+PHP抽奖程序(下)

    上一篇讲解了幸运大转盘前端,而本文继续讲下半部分:PHP控制抽奖几率并最终实现转盘抽奖. 下载资源 下载积分: 95 积分 PHP 首先,在ajax.php中创建一个奖项对应角度和中奖几率二维数组: ...

  2. 幸运大转盘php逻辑判断,jQuery幸运大转盘_jQuery+PHP抽奖程序(上)

    网上转盘抽奖程序大多是flash完成的,而本文使用jQuery和PHP来实现转盘抽奖程序,为了便于理解,我们分两部分来讲解,本文讲解第一部分,侧重使用jQuery实现转盘的转动效果.第二部分侧重使用P ...

  3. jQuery幸运大转盘

    jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现 在线实例 查看演示 完整代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  4. Web3D小游戏Threejs小游戏|微信跳一跳|飞行家|前端小游戏抽奖游戏|刮刮乐|砸金蛋|幸运大转盘|翻牌抽奖|套气球|抓福袋|抽奖游戏|幸运大翻盘|拼人品|吃什么|枪击游戏|植物大战僵尸|打砖块

    个人主页: 左本Web3D,更多案例预览请点击==> 在线案例 个人简介:专注Web3D使用ThreeJS实现3D效果技巧和学习案例

  5. js框架jquery实现的幸运大转盘抽奖程序代码,兼容多种浏览器(Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Chrome)

    博客目录 js框架jquery实现的幸运大转盘抽奖程序代码 实现功能截图 系统功能 使用技术 代码 写在最后 js框架jquery实现的幸运大转盘抽奖程序代码 本系统实现了一个幸运转盘抽奖,兼容多种浏 ...

  6. php幸运大抽奖,幸运大转盘-jQuery+PHP实现的抽奖程序-完善中

    小雨在线网站自营销研究之幸运大转盘-jQuery+PHP实现的抽奖程序-完善中 1.[代码][PHP]代码 小雨在线网站自营销研究 $(function () { $("#startbtn& ...

  7. PHP做大转盘抽奖的思路,jQuery实现幸运大转盘(php抽奖程序)抽奖程序

    抽奖程序有各式各样的形式,其中幸运大转盘最为常见.线上线下都有很多的使用场景. 本文结合我自己的php网站,是实现一个php抽奖程序. 下图是该抽奖程序的截图: 一般的抽奖程序主要是算法程序,界面效果 ...

  8. js框架jquery实现幸运大转盘抽奖程序代码,兼容多种浏览器

    原文:js框架jquery实现幸运大转盘抽奖程序代码,兼容多种浏览器 源代码下载地址:http://www.zuidaima.com/share/1779633798073344.htm 看到网页上有 ...

  9. Jquery写的幸运大转盘抽奖实例,用asp.net处理的服务器逻辑,附源码下载

    [实例简介] 该幸运大转盘抽奖实例已实现服务器端的业务逻辑代码,稍加改动就可以应用实际了 文件:590m.com/f/25127180-488779229-66bbf7(访问密码:551685) [实 ...

最新文章

  1. java 挂钩子_挂钩组件
  2. 安卓程序员永远不懂iOS程序员的痛? | 每日趣闻
  3. 网管网络布线之常用兵器谱
  4. Py之twisted:Python库之twisted简介、安装、使用方法等详细攻略
  5. sql2005/sql2000 向表中循环插入100万条记录
  6. 过程声明与同名事件或过程的描述不匹配_多特征结合的倾斜无人机影像匹配方法...
  7. 如何将世界时钟和时区小部件添加到您的iPhone
  8. MATLAB编写自己的BP神经网络程序
  9. 45.MySQL Cluster
  10. 工业视觉检测厂家十大排名
  11. Constraints --- transition(clock transition、input transition、max transition)
  12. 微信小程序开发:集成腾讯地图的步骤
  13. Android自动化测试工具调研
  14. 为知笔记Markdown笔记里的插入代码怎么实现/为知笔记怎怎么插入代码段
  15. alibaba/COLA 4.0框架 使用记录
  16. blackbox_exporter端口及网络监控
  17. Ecall测试,ITU-T P.1140 车载紧急呼叫系统语音测试
  18. 2018年第九届蓝桥杯 JavaB组省赛 刷题思路及答案
  19. 图论及其应用,考点总结,UESTC研究生数学
  20. 《跟我一起学爬虫系列》3-一个简单爬虫示例

热门文章

  1. nginx之206异常
  2. Linux oracle中文乱码的问题解决
  3. 为什么用JS取不到cookie的值?解决方法如下!
  4. Vue Cli 打包之后静态资源路径不对的解决方法
  5. 什么是Maven神器?
  6. 何时及为何使用代表? [重复]
  7. 如何从我的虚拟环境中更新pip本身?
  8. 使用Git版本控制查看文件的更改历史记录
  9. Win10电脑如何合并磁盘分区
  10. windows11怎么绕过tpm安装,win11在线安装