redBag
var redBag = (function () {
var initialed = false,
raining = true,
createInterval,
walkInterval,
createIntervalTime = 500,//生成红包间隔时间
walkIntervalTime = 30,//红包动画的间隔时间
imgPath = 'img/',
images = ['monkey1.png', 'monkey2.png', 'monkey3.png', 'monkey4.png', 'monkey5.png', 'monkey6.png','monkey7.png','monkey8.png','monkey9.png','monkey10.png'],
windowWidth = $(window).width(),
windowHeight = $(window).height(),
callback = null;
/**
* 设置定时器
*/
function redBagSetInterval() {
if (raining && !createInterval) {
createInterval = setInterval(createRedBag, createIntervalTime);
}
if (raining && !walkInterval) {
walkInterval = setInterval(walk, walkIntervalTime);
}
}
/**
* 清除定时器
*/
function redBagClearInterval() {
if (createInterval) {
clearInterval(createInterval);
createInterval = null;
}
if (walkInterval) {
clearInterval(walkInterval);
walkInterval = null;
}
}
/**
* minValue 最小值
* maxValue 最大值
*/
function generateRandom(minValue, maxValue) {
/**
* 取值范围总数
*/
var choices = maxValue - minValue + 1;
return Math.floor(Math.random() * choices + minValue);
}
function createRedBag() {
var leftValue = generateRandom(0, windowWidth);
/**
* 图片随机出现
*/
var imgSrc = imgPath + images[generateRandom(0, images.length - 1)];
//
$('<img src="' + imgSrc + '"/>').addClass('red-bag').css({left: leftValue + 'px'})
//30
.data('step', 3)
.appendTo('.red-bag-wrap');
}
/**
* 红包运动
*/
function walk() {
$('.red-bag').each(function () {
$(this).css({top: parseInt($(this).css('top')) + $(this).data('step') + 'px'});
//
if (windowHeight <= parseInt($(this).css('top'))) {
$(this).remove();
}
});
}
function redBagWrapDelegate() {
/**
* 红包选中事件
*/
$('.red-bag-wrap').delegate('.red-bag', 'click', function () {
raining = false;
redBagClearInterval();
loadingUtil.show();
//这边需要后台交互,后台判断是否已经参与活动,是否中奖(后台随机生成)
try {
var redBagAjax = $.ajax({
url: 'http://www.wood365.com/Ashx/MarAct.ashx?' + Math.random(), //请求的URL
type: 'POST',
timeout: 1000, //超时时间设置,单位毫秒
dataType: 'json',//返回的数据格式
success: function (data) { //请求成功的回调函数
var status = data.status;
var message = '';
switch (status) {
case 0:
message = '恭喜您获得' + data.prize + ',我们会在\
3个工作日内将奖品寄送到您注册时所\
填的地址,如有其他疑问请联系客服!';
break;
case 1:
message = '抱歉,该红包中没有奖品哦,继续加油吧!';
break;
case 2:
message = '抱歉!您已无抽奖机会.';
break;
default :
break;
}
requestDone(message);
},
error: function (data) { //请求失败的回调函数
requestDone('网络有问题,请重试');
},
complete: function (XMLHttpRequest, status) { //请求完成后最终执行参数
if (status == 'timeout') {//超时,status还有success,error等值的情况
redBagAjax.abort();
requestDone('请求超时,请重试');
}
}
});
}
catch(e) {
requestDone('出错了,请重试');
}
function requestDone(message) {
loadingUtil.hide();
$('.red-bag-result p').text(message);
$('.red-bag-result-mask').show();
$('.red-bag-wrap').undelegate('.red-bag', 'click');
$('.red-bag').addClass('no-click');
//2016-3-3新添加
$('.close-wrap').unbind('click');
}
//test start
//setTimeout(function () {
// var status = generateRandom(0,2);
// var message = '';
// switch (status) {
// case 0:
// message = '恭喜您获得 iPhone 6S 一台,我们会在\
// 3个工作日内将奖品寄送到您注册时所\
// 填的地址,如有其他疑问请联系客服!';
// break;
// case 1:
// message = '抱歉,该红包中没有奖品哦,继续加油吧!';
// break;
// case 2:
// message = '抱歉!您已无抽奖机会.';
// break;
// default :
// break;
// }
//
// loadingUtil.hide();
// $('.red-bag-result p').text(message);
// $('.red-bag-result-mask').show();
// $('.red-bag-wrap').undelegate('.red-bag', 'click');
//$('.red-bag').addClass('no-click');
//}, 2000);
// test end
});
}
var init = function () {
initialed = true;
/**
* body添加class名为red-bag-wrap
*/
$('<div></div>').addClass('red-bag' +
'-wrap')
.width(windowWidth)
.height(windowHeight)
.appendTo('body');
/**
* 添加关闭
*/
$('<div></div>').addClass('close-relative').appendTo('.red-bag-wrap');
$('<div></div>').addClass('close-wrap').appendTo('.close-relative');
$('<img src="img/close.png" />').appendTo('.close-wrap');
//2016-3-3关闭按钮回到初始页面
$('.close-wrap').on('click',function() {
stop();
});
$('<div></div>').addClass('red-bag-result-mask').hide().appendTo('.red-bag-wrap');
$('<div></div>').addClass('red-bag-result').appendTo('.red-bag-result-mask');
$('<p></p>').appendTo('.red-bag-result');
$('<div></div>').addClass('red-bag-close').appendTo('.red-bag-result');
/**
* 钱包确定点击事件
*/
$('.red-bag-close').on('click', function () {
raining = true;
redBagWrapDelegate();//这是猴子的点击事件
$('.red-bag').removeClass('no-click');
$('.red-bag-result-mask').hide();
redBagSetInterval();
$('.red-bag-mask').remove();
//2016-3-3福袋的时候关闭
$('.close-wrap').on('click',function() {
stop();
});
});
//
redBagSetInterval();
/**
* 生成红包
*/
redBagWrapDelegate();
$(window).resize(function () {
windowWidth = $(window).width();
windowHeight = $(window).height();
$('.red-bag-wrap').width(windowWidth).height(windowHeight);
});
window.onfocus = function () {
redBagSetInterval();
};
window.onblur = function () {
redBagClearInterval();
};
$(document).unload(function () {
redBagClearInterval();
});
};
//开始
var start = function (fn) {
if(typeof fn === 'function') {
callback = fn;
}
if(!initialed) {
init();
}
else {
resume();
}
};
//停止
var stop = function () {
$('.red-bag-wrap').hide();
redBagClearInterval();
$('.red-bag').remove();
callback();
};
//继续
var resume = function () {
$('.red-bag-wrap').show();
redBagSetInterval();
};
return {
start: start,
stop: stop
}
}());
$(function () {
function redBagBtnBindClick() {
$('.red-bag-btn').on('click', function () {
$('.red-bag-btn').unbind('click');
redBag.start(redBagBtnBindClick);
});
}
redBagBtnBindClick();
});
redBag的更多相关文章
- EntityFramework 优化建议
Entity Framework目前最新版本是6.1.3,当然Entity Framework 7 目前还是预览版,并不能投入正式生产环境,估计正式版16年第一季度会出来,了解过EF7的部分新特性后, ...
- 洛谷 P1466 集合 Subset Sums Label:DP
题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...
- NOIp 2012 #2 借教室 Label:区间修改线段树
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- C#实用杂记-EF全性能优化技巧
原文链接:http://www.makmong.com/947.html#comment-31 EntityFramework 优化建议 2016年1月15日 下午4:54 LEILINKANG ...
- [洛谷2397]yyy loves Maths VI
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 他让redbag找众数他还特意 ...
- Codeforces Round #446 (Div. 2)
Codeforces Round #446 (Div. 2) 总体:rating涨了好多,虽然有部分是靠和一些大佬(例如redbag和ShichengXiao)交流的--希望下次能自己做出来2333 ...
- luogu【P2753】[USACO4.3]字母游戏Letter Game
这个题...一开始看了很久题目(并且问了机房几个大佬)才明白题意.. (原题入口) 题意 大概是一开始给你一些字母出现的次数 你之后组成的单词(最多两个单词)每个字母出现次数 必须小于或等于标准(st ...
- THUWC2018滚粗记
THUWC2018滚粗记 前言 又是一篇滚粗记, 不过可能还要写过很多很多篇滚粗记, 才会有一篇不是滚粗记的东西啦 总而言之,我现在还是太菜了 还要过一大段时间我才会变强啦 Day -inf 联赛考完 ...
- NOIp2017 滚粗记
NOIp2017 滚粗记 Day0 早上 早自习的时候,班主任忽然告诉我们, 我们要参加期中考试... 这对于我们真是一个沉重的打击... 但是,管不着了 明天就死去考试了 上午 \(8:10\)到了 ...
随机推荐
- 在C#实现托盘效果(转)
桌面程序的开发中,经常考虑能在状态栏实现托盘快捷操作,托盘程序的实现在API时代,还是相对复杂的,首先在MSDN中可以查看其函数细节, 然后在根据其要求的参数进行复杂的设置. 在.NET时代 ...
- sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'SendMealAddress'中为标识列指定显式值。
ps = con.prepareStatement("insert into SendMealAddress values(null,?,?,?,?)"); 表有一列是自增长的标识 ...
- Arcgis Engine 添加一个Symbol符号样式步骤
public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...
- Mybatis.net与MVC入门配置及联合查询动态SQL拼接和简单事务
第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方 ...
- Oracle EBS-SQL (OM-1):查询订单发货明细.sql
select mtrh.request_number 发货单号, mmt.transaction_date 发货时间, ...
- Excel导入到DataTable
1.前台代码 <asp:FileUpload ID="fupFiles" runat="server" /> <asp:Button ID=& ...
- 最核心4大NFC技术规范详解
1998年,飞利浦.索尼和诺基亚创建了 NFC论坛,宗旨是推动NFC的发展普及和规范化.论坛至今共推出了5大类技术规范:协议技术规范(Protocol Technical Specification) ...
- Tip.It诞生记
灵光一闪 之所以想做 Tip.It,完全是受自己初到北京时找房子各种痛苦的启发,当时为了跳过中介租房子,去58同城,豆瓣等各种网站去看房子,比如说下图就是一个典型的58同城的租房页面. 可以看到电话号 ...
- Serv-U无法连接到服务器127.0.0.1,端口43958 FTP服务器不能启动
端口43958,这是Serv-U的本地管理端口,只允许127.0.0.1连接. 在出现“Serv-U无法连接到服务器127.0.0.1,端口43958”这个错误的时候,一般ftp软件无法自动启动 ...
- cp | mv | rm
linux下文件的复制.移动与删除命令为:cp,mv,rm 一.文件复制命令cp 命令格式: cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [opt ...