asp.net+jQueryRotate开发幸运大转盘

在线抽奖程序在非常多站点上非常多,抽奖形式多种多样。Flash抽奖偏多,本文将给大家介绍jQuery转盘抽奖。结合代码实例将使用jQuery和asp.net来实现转盘抽奖程序,为了便于理解,文章贴出实现源码作为分享。通过转动转盘指针来完毕抽奖的一种抽奖形式。依据旋转角度来控制指针停留的位置——幸运大转盘。

1、先来张幸运大抽奖效果图

2、Default.aspx页面代码

<!--
很多其它技术分享请看博客:http://blog.csdn.net/fuyifang
--> 
<span style="font-family:Microsoft YaHei;font-size:14px;"><%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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 runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
    <title>幸运大转盘</title>

    <style type="text/css">
     .demo{ position:relative;}
    #disk{ position:relative; z-index:1;}
    #start{ position:absolute; top:-0; z-index:9;}
    #start img{cursor:pointer; border:none;}
    </style>
    <script src="Scripts/jquery-1.7.1.min.js"  type="text/javascript"></script>
    <script src="Scripts/jQueryRotate.2.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("#startbtn").click(function () {
                lottery();
            });
        });
        function lottery() {
            $.ajax({
                type: ‘POST‘,
                url: ‘data.aspx‘,
                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: 8000, //转动时间
                        angle: 0,
                        animateTo: 2880+ a, //转动角度
                        easing: $.easing.easeOutSine,
                        callback: function () {
                            var con = confirm(‘恭喜你。中得‘ + p + ‘\n还要再来一次吗?‘);
                            if (con) {
                                lottery();
                            } else {
                                $("#startbtn").click(function () {
                                    lottery();
                                }).css("cursor", "pointer");
                                return false;
                            }
                        }
                    });
                }
            });
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
   <div>
        <div class="demo">
            <div id="disk"><img src="img/disk.jpg" width="100%" style="max-width:640px;"/></div>
            <div id="start"><a href="###"><img src="img/start.png" id="startbtn" width="100%" style="max-width:640px;"/></a></div>
       </div>

    </div>

    </form>
</body>
</html>
 </span>
<!--
很多其它技术分享请看博客:http://blog.csdn.net/fuyifang
--> 

我们构建自己定义函数lottery()。在lottery()我们向data.php发送一个POST请求。假设成功返回中奖信息后,调用rotate插件開始转动,转动角度由后台返回的角度决定,这里我们用2880+a表示转动的角度,即指针转动8圈+a度后停止,然后我们在单击“開始抽奖”button时调用lottery(),于是转盘抽奖就完毕。

3、data.aspx中奖逻辑代码

<!--
很多其它技术分享请看博客:http://blog.csdn.net/fuyifang
--> 
<span style="font-family:Microsoft YaHei;font-size:14px;">using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class data : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Hashtable ht = new Hashtable();
        Hashtable p1 = new Hashtable();
        p1.Add("id", 1);
        p1.Add("min", 1);
        p1.Add("max", 59);
        p1.Add("prize", "500积分");
        p1.Add("v", 1);
        ht.Add(0, p1);

        Hashtable p2 = new Hashtable();
        p2.Add("id", 2);
        p2.Add("min", 60);
        p2.Add("max", 119);
        p2.Add("prize", "100积分");
        p2.Add("v", 5);
        ht.Add(1, p2);

        Hashtable p3 = new Hashtable();
        p3.Add("id", 3);
        p3.Add("min", 121);
        p3.Add("max", 179);
        p3.Add("prize", "10元商品");
        p3.Add("v", 5);
        ht.Add(2, p3);

        Hashtable p4 = new Hashtable();
        p4.Add("id", 4);
        p4.Add("min", 180);
        p4.Add("max", 240);
        p4.Add("prize", "500积分");
        p4.Add("v", 10);
        ht.Add(3, p4);

        Hashtable p5 = new Hashtable();
        p5.Add("id", 5);
        p5.Add("min", 240);
        p5.Add("max", 300);
        p5.Add("prize", "谢谢參与");
        p5.Add("v", 80);
        ht.Add(4, p5);

        Hashtable p6 = new Hashtable();
        p6.Add("id", 6);
        p6.Add("min", 300);
        p6.Add("max", 360);
        p6.Add("prize", "订单免单");
        p6.Add("v", 1);
        ht.Add(5, p6);

        //Hashtable p7 = new Hashtable();
        //p7.Add("id", 7);
        //p7.Add("min", new int[6] { 32, 92, 152, 212, 272, 332 });
        //p7.Add("max", new int[6] { 58, 118, 178, 238, 298, 358 });
        //p7.Add("prize", "谢谢參与");
        //p7.Add("v", 50);
        //ht.Add(6, p7);

        //Console.WriteLine(ht[0]);
        int htlength = ht.Count;
        int[] proArr = new int[htlength];
        foreach(DictionaryEntry single in ht)
        {
            Hashtable subObj = single.Value as Hashtable;
            proArr[(int)single.Key] = (int)subObj["v"];
        }

        int rid = this.getRand(proArr);
        int jiaodu = 0;
        string prize = null;
        Hashtable res = ht[rid] as Hashtable;
        Random ran = new Random();

        if ((int)res["id"] == 7)
        {
            int[] mins = (int[])res["min"];
            int[] maxs = (int[])res["max"];
            int i = ran.Next(0, 5);
            jiaodu = ran.Next(mins[i], maxs[i]);
        }
        else
        {
            int mins = (int)res["min"];
            int maxs = (int)res["max"];
            jiaodu = ran.Next(mins, maxs);
        }

        prize = res["prize"].ToString();

        string json = "{\"angle\":" + jiaodu.ToString() + ",\"prize\":\"" + prize + "\"}";
        Response.Write(json);
        //Dictionary<string, Dictionary<string,string>> dt = new Dictionary<string, Dictionary<string,string>>();
    }

    public int getRand(int[] proArr)
    {
        int result = -1;
        int proSum = 0;
        foreach(int val in proArr)
        {
            proSum += val;
        }
        int length = proArr.Length;
        for (int i = 0; i < length; i++)
        {
            Random ran = new Random();
            int ranNum = ran.Next(1, proSum);
            if (ranNum <= proArr[i])
            {
                result = i;
                break;
            }
            else
            {
                proSum -= proArr[i];
            }
        }
        return result;
    }

}</span>
<!--
很多其它技术分享请看博客:http://blog.csdn.net/fuyifang
--> 

V參数代表百分比。默觉得100,V月大代表该奖项中奖率越高,越小中奖率越小。

很多其它关注付义方技术博客:http://blog.csdn.net/fuyifang

时间: 2024-10-09 16:14:52

asp.net+jQueryRotate开发幸运大转盘的相关文章

【微信公众平台开发】微信幸运大转盘

需要js插件(下载包地址:http://download.csdn.net/detail/wyz365889/7798255): jquery jQueryRotate.2.2.js jquery.easing.min.js 前端显示代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name=

js幸运大转盘开发

最终效果实例下载:http://www.oschina.net/code/snippet_2352644_54997 一.大转盘准备工作 网上的一个抽奖大转盘实例http://www.jq22.com/yanshi2252 这就是我们要开发的效果,不过我们是让指针转,我们先分析这个效果: 结构有2部分,上面是指针背景图,下面是奖项图 点击指针元素开始抽奖,会转动一定圈数停下来 停下来的位置指针指使那个奖项,就会弹出获奖信息提示 这是参考效果,我们分析自己的大概实现: 同样上下2部分 点击指针转动

jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现

在线实例 查看演示 完整代码 <!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

PHP幸运大转盘源码,支持ThinkPHP

原理 先看图 可以看到1-6等奖都只有1个 ,7等奖有6个.指针默认指向上图位置,记为0°. 每个奖项对应不同的角度,圆的角度为360°,分成12块,所以每块为30°. 为了防止指针指着相邻两个将向之间的线,所以记为一等奖的最小角度为1°,最大角度为29°.同理可找出其他奖项的角度,这要注意,七等奖有6个. 然后呢,每个奖项都有不同的中奖概率,我们根据概率来获取奖项(概率可以设置为0,你懂的-),获取奖品后,在根据最大和最小角度生成一个随机数,来让指针旋转即可.. HTML代码 代码是基于thi

ECMALL FLASH幸运大转盘升级

大转盘新升级描述: 1.新修复一些bug 2.底层代码更优化 3.更方便API接口调用 ECMALL  FLASH幸运大转盘积分抽奖描述: 1:可以设置每个奖品的中奖概率,后台自由设置: 2:可以设置每个奖品的数量,当该奖品全部被抽出时不会再抽中此奖品,这样更好地预先制定奖品总额. 3:中奖公告内容设置,每个奖品的中奖后在中奖公告内显示出来: 4:抽奖程序与商城同步登录与退出,采用的为一个会员系统,更加无缝的结合在一起: 5:记录每个抽奖记录,无论管理员在后台还是会员在自己的管理中心均可以查看中

(素材源码)猫猫学iOS(四十六)之网易彩票幸运大转盘

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 素材源码地址:http://download.csdn.net/detail/u013357243/8713827 效果 代码: NYWheel NYWheel.h // // NYWheel.h // 网易彩票幸运大转盘 // // Created by apple on 15-5-18. // Copyright (c)

html5简单拖拽实现自动左右贴边+幸运大转盘

此篇文章主要实现两个功能: 1.点击屏幕下方签到悬浮按钮: 2.弹出幸运大转盘,转盘抽奖签到 效果如图: 鉴于初入前端之路,方法有限,仅供参考. 在网上找了很多拖拽的js实现方式,大部分都是这一种,html5的touch事件,但是没找到点击按钮可以向两边贴边的拖拽,所以自己稍微修改了一点.代码如下: //签到按钮拖拽 var dragBox = document.getElementById('signCorner'); //拖拽中 dragBox.addEventListener('touch

利用jQueryRotate旋转插件开发大转盘抽奖

前言: 公司原来开发大转盘抽奖活动用的是flash 我发现swf文件竟然有6m大,吓尿了! 其实完全可以用js写的,但是自身前端功力有限,且时间紧迫,所以直接用旋转插件就好,兼容各方面都可以保证. 1.引用Jquery.js .jQueryRotate.2.2.js 插件 2.html代码: <div style="width: 480px;margin: 0 auto;height: 480px;background:url(http://weixin.maotui.cn/web/wec

微信小程序开发之大转盘 仿天猫超市抽奖

天猫超市翻牌的转盘经常用,以前做Android,没啥想法,现在尝试微信小程序,看到别人家APP里有啥好玩的,就想去做一个. 上GIF看效果: 简要的说一下. 1.外面一圈闪烁的小球是用js控制的样式.500ms改变一次样式.简单粗暴; 2.抽奖的item也是js控制背景,但是怎么样让它优雅的停下来是个问题.动画中有timingFunction可以设置速度.自己用js就没那么简单了.我这里用setInterval(),时间是线性变化的.换个斜率先小后大的函数效果应该会好一些. 技术相关: 1.微信