使用帆软制作一个转盘抽奖

楼主
我是社区第101117位番薯,欢迎点我头像关注我哦~
报表模板投稿
功能演示:
功能说明:

抽奖互动是一个很火活动,很受欢迎的常见项目、有些软件上上也会添加上一个趣味抽奖功能,比如帆软摇摇乐功能、那么如何用finereport制作一个简单的抽奖模板

var span = _g().getWidgetByName('startbutton')
var message = document.getElementById('message');
var timer = null;
var bReady = true;//定义一个抽奖开关
var Widget = contentPane.getWidgetByName("startbutton");
var Arr=new Array(11); 
	Arr[0] = "D3"
	Arr[1] = "E3"
	Arr[2] = "F3"
	Arr[3] = "G3"
	Arr[4] = "G4"
	Arr[5] = "G5"
	Arr[6] = "G6"
	Arr[7] = "F6"
	Arr[8] = "E6"
	Arr[9] = "D6"
	Arr[10] = "D5"
	Arr[11] = "D4"
var num = 0;//num用来存放得到的随机函数,也就是抽中的奖品

    //开始抽奖
        if(bReady) {//当抽奖开关为true的时候,可点击抽奖
            message.style.display="none";//将获奖信息div隐藏(以防止上次抽奖信息还显示)
			$('#fr-btn-STARTBUTTON').css("background","#ada7a8");//置灰
			Widget.setEnable(false);
            bReady = false;//抽奖开关设为false 处于抽奖中 即不能点击抽奖
            num = getrandomnum(0,11)//得到一个随机数(即奖品)
            startinit(num);//执行抽奖初始化
        }
    //抽中的奖品 返回0-11的整数
    function getrandomnum(n, m) {
		return parseInt(Math.random()*(m-n+1)+n,10);
      //  return parseInt((m - n) * Math.random() + n);
    }

    //抽奖初始化
    function startinit(num) {
        var i = 0;  //定义一个i 用来计算抽奖跑动的总次数
        var t =200;  //抽奖跑动的速度 初始为200毫秒
        var rounds = 5;  //抽奖转动的圈数
        var rNum = rounds*12;  //标记跑动的次数(这是一个条件判断分界线)
        timer = setTimeout(startscroll, t);//每t毫秒执行startscroll函数
		//alert("抽奖初始化");

        //抽奖滚动的函数
        function startscroll() {
			//alert("抽奖滚动的函数");
            //每次滚动抽奖将所有li的class都设为空
            for(var j = 0; j < Arr.length; j++) {
                $("td[id^=" + Arr[j] + "]").css({"background-color": "#ffffff"});
            }

            var prizenum = Arr[i%Arr.length];  //通过i余12得到此刻在Arr数组中的数字,该数字就是mask标记出现的位置
			//alert("通过i余12得到"+prizenum);
			$("td[id^=" + prizenum + "]").css({"background-color": "#ff3a59"});
            i++;

            if(i<rNum-12){  //当i小于转(rNum-11次)的数量,t不变还是200毫秒
                timer = setTimeout(startscroll, t);//继续执行抽奖滚动
            }else if(i>= rNum-12 && i< rNum+num){
                //t时间变长,此时计时器运行速度降低,同时标签刷新速度也降低
                t+=(i-rNum+12)*5;
                timer = setTimeout(startscroll, t);//继续执行抽奖滚动
            }
            if( i >= rNum+num){//当i大于转rNum加随机数字num次计时器结束,出现提示框提示中奖信息
				
				var cellvalue= _g().getCellValue(Arr[num-1],null)	
				 message.innerHTML="恭喜你中了"+cellvalue;
                var timer2 = null;
                timer2 = setTimeout(function(){
                    message.style.display="block";//奖品展示的信息为显示状态
					$('#fr-btn-STARTBUTTON').css("background","#ff3a59");//置灰
                    clearTimeout(timer2);
                },1000);
                bReady = true;//当计时器结束后让span标签变为抽奖状态
				Widget.setEnable(true)
                clearTimeout(timer);
            }

        }
    }

抽奖.zip (3.58 K)

编辑于 2021-9-15 15:53

编辑于 2021-9-15 15:55

编辑于 2021-9-15 15:56
分享扩散:

沙发
发表于 2021-9-15 15:58:15
板凳
发表于 2021-9-15 16:47:14
剑指js
地板
发表于 2024-3-7 16:03:46
咋通过登录的账号进行内定
5楼
发表于 2024-3-7 17:54:47
6楼
发表于 2024-6-25 09:14:52
1222222
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

6回帖数 1关注人数 6747浏览人数
最后回复于:2024-6-25 09:14

返回顶部 返回列表