API Docs for: 1.10.1 最后更新日期:2016年03月28日
Google搜索   
Show:

File: lib/ui/LRange-0.1.1.js

/** @language chinese
 * <p>lufylegend.js专用UI,区域范围对象</p>
 * <p>此函数为多态,另一种形式请点击这里<a href="LRange.html">LRange</a></p>
 * <p>使用时需要引进lufylegend.ui-x.x.x.js文件。</p>
 * @class UI:LRange
 * @constructor
 * @extends LSprite
 * @param {float} width 区域范围对象的宽。
 * @since 0.1.0
 * @examplelink <p><a href="../../../api/ui/LRange.html" target="_blank">测试链接</a></p>
 * @public
 */
/** @language chinese
 * <p>lufylegend.js专用UI,区域范围对象</p>
 * <p>此函数为多态,另一种形式请点击这里<a href="UI:LRange.html">LRange</a></p>
 * <p>使用时需要引进lufylegend.ui-x.x.x.js文件。</p>
 * @class LRange
 * @constructor
 * @extends LSprite
 * @param {LDisplayObject} backLayer 区域范围对象的背景。
 * @param {LDisplayObject} selectLayer 区域范围对象的拖动样式。
 * @since 0.1.0
 * @examplelink <p><a href="../../../api/ui/LRange.html" target="_blank">测试链接</a></p>
 * @public
 */
var LRange = (function () {
	function LRange () {
		var s = this, w, h ,param;
		LExtends(s, LSprite, []);
		s.type = "LRange";
		/** @language chinese
		 * [只读]区域范围对象的值,范伟[0-1]。
		 * @property value
		 * @type float
		 * @since 0.1.0
		 * @public
		 */
		s.value = 0;
		if (arguments.length == 0) {
			param = {width : 200};
		} else if (arguments.length == 1 && typeof arguments[0] == "number") {
			param = {width : arguments[0]};
		} else if (arguments.length == 2) {
			param = {backLayer : arguments[0], selectLayer : arguments[1]};
		} else {
			throw "LRange's param is wrong";
		}
		if (param["backLayer"] && param["selectLayer"]) {
			var backLayer = param["backLayer"];
			s.sign = param["selectLayer"];
			h = backLayer.getHeight() > s.sign.getHeight() ? backLayer.getHeight() : s.sign.getHeight();
			backLayer.y = (h - backLayer.getHeight()) * 0.5;
			s.w = backLayer.getWidth();
			s.graphics.drawRect(0, "#FFFFFF", [-50, 0, s.w + 100, h]);
			s.addChild(backLayer);
		}else{
			s.w = param["width"];
			s.graphics.drawRect(0, "#FFFFFF", [-50, 0, s.w + 100, s.w * 0.13]);
			var grd = LGlobal.canvas.createLinearGradient(0, 0, 0, s.w * 0.13);
			grd.addColorStop(0, "#FFFFFF");
			grd.addColorStop(1, "#CCCCCC");
			s.color = grd;
			s.graphics.drawRect(1, "#CCCCCC", [0, s.w * 0.04, s.w, s.w * 0.03], true, s.color);
			s.sign = new LSprite();
			s.sign.graphics.drawVertices(1, "#CCCCCC", [[0, 0], [s.w * 0.05, 0], [s.w * 0.05, s.w * 0.1], [s.w * 0.025, s.w * 0.13], [0, s.w * 0.1]], true, s.color);
		}
		s.addChild(s.sign);
		s.sign.x = -s.sign.getWidth() * 0.5;
		s.addEventListener(LMouseEvent.MOUSE_DOWN, s._onDown);
	}
	LRange.ON_CHANGE = "onchange";
	LRange.prototype.clone = function () {
		var s = this, a = new LRange(s.w);
		a.copyProperty(s);
		return a;
	};
	LRange.prototype._onDown = function (event) {
		var s = event.clickTarget;
		if (event.selfX < -s.sign.getWidth() * 0.5 || event.selfX > s.w + s.sign.getWidth() * 0.5) {
			return;
		}
		if (s.down) {
			return;
		}
		s.down = true;
		s.sign.x = event.selfX - s.sign.getWidth() * 0.5;
		if (s.sign.x < -s.sign.getWidth() * 0.5) {
			s.sign.x = -s.sign.getWidth() * 0.5;
		}
		if (s.sign.x > s.w - s.sign.getWidth() * 0.5) {
			s.sign.x = s.w - s.sign.getWidth() * 0.5;
		}
		s._DownX = s.sign.x;
		s._OffsetX = event.selfX;
		s._getValue();
		s.addEventListener(LMouseEvent.MOUSE_MOVE, s._onMove);
		LGlobal.stage._ll_range = s;
		LGlobal.stage.addEventListener(LMouseEvent.MOUSE_UP, s._onUp);
	};
	LRange.prototype._getValue = function () {
		var s = this;
		var value = s.value;
		s.value = Math.floor((s.sign.x + s.sign.getWidth() * 0.5) * 100 / s.w);
		if(value != s.value){
			s.dispatchEvent(LRange.ON_CHANGE);
		}
	};
	LRange.prototype.setValue = function (value) {
		var s = this;
		s.sign.x = s.w * value * 0.01 - s.sign.getWidth() * 0.5;
		s._getValue();
	};
	LRange.prototype._onMove = function (event) {
		var s = event.clickTarget;
		s.sign.x = s._DownX + event.selfX - s._OffsetX;
		if (s.sign.x < -s.sign.getWidth() * 0.5) {
			s.sign.x = -s.sign.getWidth() * 0.5;
		}
		if (s.sign.x > s.w - s.sign.getWidth() * 0.5) {
			s.sign.x = s.w - s.sign.getWidth() * 0.5;
		}
		s._getValue();
	};
	LRange.prototype._onUp = function (event) {
		var s = LGlobal.stage._ll_range;
		s.down = false;
		s.removeEventListener(LMouseEvent.MOUSE_MOVE, s._onMove);
		LGlobal.stage.removeEventListener(LMouseEvent.MOUSE_UP, s._onUp);
	};
	return LRange;
})();