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

File: lib/ui/LWindow-0.1.0.js

/** @language chinese
 * <p>lufylegend.js专用UI,窗口</p>
 * <p>使用时需要引进lufylegend.ui-x.x.x.js文件。</p>
 * @class UI:LWindow
 * @constructor
 * @extends LSprite
 * @param {float} width 窗口的宽。
 * @param {float} height 窗口的高。
 * @param {String} title 窗口的标题。
 * @since 0.1.0
 * @examplelink <p><a href="../../../api/ui/LWindow.html" target="_blank">测试链接</a></p>
 * @public
 */
var LWindow = (function () {
	function LWindow(width,height,title){
		var s = this;
		LExtends(s, LSprite, []);
		s.type = "LWindow";
		s.w = width;
		s.h = height;
		s.bar = new LSprite();
		s.bar.alpha = 0.7;
		s.barColor = "#0000FF";
		s.bar.w = s.w;
		s.bar.h = 30;
		s.addChild(s.bar);
		s.bar.addEventListener(LMouseEvent.MOUSE_DOWN, s._onBarDown);
		s.title = new LTextField();
		s.title.x = s.title.y = 3;
		s.title.size = 16;
		s.title.text = title ? title : "";
		s.bar.addChild(s.title);
		s.close = new LSprite();
		s.closeColor = "#800000";
		s.close.w = 50;
		s.close.h = 25;
		s.addChild(s.close);
		s.close.addEventListener(LMouseEvent.MOUSE_UP, s._onClose);
		s.sign = new LSprite();
		s.signColor = "#FFFFFF";
		s.addChild(s.sign);
		/** @language chinese
		 * [只读]窗口的根容器,在窗口中添加显示对象,都需要加在此容器或者它的子容器中。
		 * @property layer
		 * @type LSprite
		 * @since 0.1.0
		 * @public
		 */
		s.layer = new LSprite();
		s.addChild(s.layer);
		s.layerColor = "#FFFFFF";
		s.layer.y = s.bar.h;
		s.layer.h = s.h - s.bar.h;
		var g = new LGraphics();
		g.rect(0, 0, s.w, s.layer.h);
		s.layer.mask = g;
		s.graphics.drawRect(1, s.barColor, [0, s.bar.h, s.w, s.layer.h], true, s.layerColor);
		s.addEventListener(LMouseEvent.MOUSE_UP, function (e) {});
		s.addEventListener(LMouseEvent.MOUSE_DOWN, function (e) {});
		s.addEventListener(LMouseEvent.MOUSE_MOVE, function (e) {});
		s.addEventListener(LMouseEvent.MOUSE_OVER, function (e) {});
		s.addEventListener(LMouseEvent.MOUSE_OUT, function (e) {});
		s.addEventListener(LEvent.ENTER_FRAME, s._onDraw);
	}
	/** @language chinese
	 * 窗口关闭时调用此事件。
	 * @event LWindow.CLOSE
	 * @since 0.1.0
	*/
	LWindow.CLOSE = "close";
	LWindow.prototype.clone = function () {
		var s = this, a = new LWindow(s.w, s.h);
		a.copyProperty(s);
		a.removeChild(a.bar);
		a.bar = s.bar.clone();
		a.addChild(a.bar);
		a.removeChild(a.close);
		a.close = s.close.clone();
		a.addChild(a.close);
		a.removeChild(a.sign);
		a.sign = s.sign.clone();
		a.addChild(a.sign);
		a.removeChild(a.layer);
		a.layer = s.layer.clone();
		a.addChild(a.layer);
		a.bar.addEventListener(LMouseEvent.MOUSE_DOWN, a._onBarDown);
		a.close.addEventListener(LMouseEvent.MOUSE_UP, a._onClose);
		return a;
	};
	LWindow.prototype._onClose = function (event) {
		var s = event.clickTarget.parent;
		s.dispatchEvent(LWindow.CLOSE);
		s.parent.removeChild(s);
	};
	LWindow.prototype._onDraw = function (event) {
		var s = event.target;
		var co = s.getRootCoordinate();
		if (s.barColorSet == s.barColor) {
			return;
		}
		s.barColorSet = s.barColor;
		s.xSet = co.x;
		s.ySet = co.y;
		var barGrd = LGlobal.canvas.createLinearGradient(0, -s.bar.h * 0.5, 0, s.bar.h * 2);
		barGrd.addColorStop(0, "#FFFFFF");
		barGrd.addColorStop(1, s.barColor);
		var closeGrd = LGlobal.canvas.createLinearGradient(0, -s.close.h * 0.5, 0, s.close.h * 2);
		closeGrd.addColorStop(0, "#FFFFFF");
		closeGrd.addColorStop(1, s.closeColor);
		s.bar.graphics.clear();
		s.bar.graphics.drawRoundRect(1, s.barColor, [0, 0, s.bar.w, s.bar.h, s.bar.h * 0.1], true, barGrd);
		s.close.graphics.clear();
		s.close.graphics.drawRoundRect(1, s.closeColor, [s.w - s.close.w, 0, s.close.w, s.close.h, s.close.h * 0.1], true, closeGrd);
		s.sign.graphics.clear();
		s.sign.graphics.drawLine(4, s.signColor, [s.w - s.close.w + 15, 5, s.w - 15, s.close.h - 5]);
		s.sign.graphics.drawLine(4, s.signColor, [s.w - s.close.w + 15, s.close.h - 5, s.w - 15, 5]);
	};
	LWindow.prototype._onBarDown = function (event) {
		var s = event.clickTarget.parent;
		s.bar.addEventListener(LMouseEvent.MOUSE_UP, s._onBarUp);
		s.startDrag();
	};
	LWindow.prototype._onBarUp = function (event) {
		var s = event.clickTarget.parent;
		s.stopDrag();
		s.bar.removeEventListener(LMouseEvent.MOUSE_UP, s._onBarUp);
	};
	return LWindow;
})();