当前位置: 代码迷 >> Web前端 >> 滚动数目字跑马灯
  详细解决方案

滚动数目字跑马灯

热度:219   发布时间:2012-11-23 22:54:33.0
滚动数字跑马灯
var scrollnumber = {
	parseParam: function(d, c, b) {
		var e, f = {};
		c = c || {};
		for (e in d) {
			f[e] = d[e];
			if (c[e] != null) {
				if (b) {
					if (d.hasOwnProperty[e]) {
						f[e] = c[e]
					}
				} else {
					f[e] = c[e]
				}
			}
		}
		return f
	},

	getUniqueKey: function(c) {
		var a = (new Date()).getTime().toString(),
		b = 1;
		return function() {
			return a + (b++)
		}
	},

	numShow: function(e, c) {
		var l = {},
		_this = this,
		g = {};
		var j = {
			num : 0,
			len : 8,
			height : 24,
			time : 5000,
			speed : 4,
			scope : 10
		};
		c = _this.parseParam(j, c);
		c.eachTop = [0];
		for (var h = 1; h <= 10; h++) {
			c.eachTop.push(c.eachTop[h - 1] - c.height)
		}
		var m = "T_" + _this.getUniqueKey();
		g[m] = c;
		var p = function (t) {
			var w = t.toString(),
			s = "",
			v = "";
			for (var u = 0; u < g[m]["len"]; u++) {
				v += "0"
			}
			if (w.length < g[m]["len"]) {
				s = v.slice(w.length) + w
			} else {
				if (w.length > g[m]["len"]) {
					throw "Number is longer than you set"
				} else {
					s = w
				}
			}
			return s.split("")
		};
		var o = function (t, s) {
			var v = [];
			for (var u = 0; u < t.length; u++) {
				if (t[u] != s[u]) {
					v.push(u)
				}
			}
			return v
		};
		var f = function () {
			if (!g[m].oNum) {
				g[m].oNum = g[m].num
			}
			if (!g[m].cNum) {
				g[m].cNum = g[m].oNum
			}
			g[m].oNum = g[m].cNum;
			g[m].cNum = g[m].oNum + Math.floor(Math.random() * g[m].scope);
			return {
				oNum : g[m].oNum,
				cNum : g[m].cNum
			}
		};
		var r = function (t, s) {
			t = parseInt(t);
			s = parseInt(s);
			if (t > s) {
				return (10 - t + s) * g[m].height
			} else {
				return (s - t) * g[m].height
			}
		};
		var n = function (t) {
			var s = g[m].eachTop;
			if (t < s[s.length - 1]) {
				t = t - s[s.length - 1]
			}
			if (t > 0) {
				t = t + s[s.length - 1]
			}
			return t
		};
		var b = function () {};
		var d = function () {
			setInterval(function () {
				var x = f();
				var u = p(x.oNum),
				w = p(x.cNum);
				var z = o(u, w);
				var v = [];
				for (var t = 0; t < z.length; t++) {
					v.push(r(u[z[t]], w[z[t]]))
				}
				var y = false;
				var s = setInterval(function () {
						for (var E = 0; E < z.length; E++) {
							var B = e.children("LI")[z[E]];
							var D;
							if (B.style.backgroundPosition) {
								D = parseInt(B.style.backgroundPosition.substr(4))
							} else {
								D = g[m].eachTop[u[z[E]]]
							}
							var F = Math.floor(v[E] / g[m].speed);
							v[E] -= F;
							if (F == 0) {
								y = true;
								B.style.backgroundPosition = "5px " + g[m].eachTop[w[z[E]]] + "px";
								if (s) {
									clearInterval(s);
									s = null
								}
								for (var C = 0; C < z.length; C++) {
									var A = e.children("LI")[z[C]];
									A.style.backgroundPosition = "5px " + g[m].eachTop[w[z[C]]] + "px"
								}
								break
							}
							B.style.backgroundPosition = "5px " + n(D - F) + "px"
						}
					}, 30)
			}, g[m].time)
		};
		var q = function () {
			e.html("");
			var t = "";
			for (var s = 0; s < p(g[m].num).length; s++) {
				t += '<li class="n' + p(g[m].num)[s] + '"></li>'
			}
			e.html(t)
		};
		q();
		l.start = d;
		return l
	},

	scroll: function (m, f) {
		var _this = this;
		var r = {};
		var j;
		var x = {};
		var p = {};
		var v = {};
		var s = {};
		var w = function () {
			t();
			h();
			o();
			//n();
			//q();
			//g();
			//u()
		};
		var t = function () {
			if (!m) {
				throw "[pl_event_search] : missing  -> path : comp.event.numShow"
			}
			//f = e.core.obj.parseParam({
			//		html : ""
			//	}, f)
			f = {html:''};
		};
		var h = function () {
			if (f.html) {
				//m.innerHTML = f.html
				m.html(f.html)
			}
			j = {
				//event : c('[node-type="event"]', m)[0],
				//user : c('[node-type="user"]', m)[0]
				user : $("ul[node-type='user']")
			};
			if (!m) {
				throw "Lack of necessary nodes  -> path : comp.event.numShow"
			}
		};
		var o = function () {
			//var y = parseInt(j.event.getAttribute("num"));
			//var z = parseInt(j.user.getAttribute("num"));
			var z = parseInt(j.user.attr("num"));
			//e.common.com.numShow(j.event, {
			//	num : y,
			//	time : 15000
			//}).start();
			_this.numShow(j.user, {
				num : z,
				time : 4000,
				scope : 50
			}).start()
		};
		var n = function () {};
		var q = function () {};
		var g = function () {};
		var u = function () {};
		var l = function () {};
		w();
		r.destory = l;
		return r
	}
}

$(function(){
	var a = $("#pl_event_numShow");
	if (!a) {
		return
	}
	scrollnumber.scroll(a)
});
  相关解决方案