⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aqualook.as

📁 太烦了
💻 AS
📖 第 1 页 / 共 5 页
字号:
		var colors:Array = new Array(
			data.state == "sunken" ? 0x677789 : 0xa0a0a0,
			data.state == "sunken" ? 0xe2e6e9 : 0xf5f5f5
		);
		var alphas:Array = new Array(100, 100);
		var ratios:Array = new Array(0, 180);
		var matrix:Object = {matrixType:"box", x:x + 1, y:y + 1, w:11, h:11, r:Math.PI / 2};
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		drawRoundRect(movie, x + 1, y + 1, x + 12, y + 12, 1);
		movie.endFill();
		// highlight
		colors = new Array(0xffffff, 0xffffff, 0xffffff);
		alphas = new Array(90, 45, 0);
		ratios = new Array(10, 110, 110);
		matrix = {matrixType:"box", x:x + 1, y:y + 1, w:11, h:11, r:Math.PI / 2};
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		drawRoundRect(movie, x + 1, y + 1, x + 12, y + 12, 1);
		movie.endFill();
		switch(data.mode)
		{
			case "press":
				fillRoundRect(movie, x, y, x + 13, y + 13, 1, 0, 10);
				break;
			case "over":
				fillRoundRect(movie, x, y, x + 13, y + 13, 1, 0xffffff, 30);
				break;
		}
		if(data.state == "sunken")
		{
			movie.lineStyle(2);
			movie.moveTo(x + 3, y + 4);
			movie.lineTo(x + 6, y + 9);
			movie.lineTo(x + 12, y - 1);
		}
	}

	private function drawBtnCheckBox(movie:MovieClip, w:Number, h:Number, data:Object):Void
	{
		movie.clear();
		pseudo.Global.drawRect(movie, 0, 0, w, h, 0, 0);
		drawCheckBox(movie, 0, Math.round((h - 13) / 2 - 1), data);
	}

	private function drawBaseTitle(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		var colors:Array = [0xefefef, 0xcacaca];
		var alphas:Array = [100, 100];
		var ratios:Array = [0, 0xff];
		var matrix = {matrixType:"box", x:0, y:0, w:nW, h:nH, r:Math.PI / 2};
		movie.clear();
		var r:Number = 8;
		movie.lineStyle(1, 0x8f8f8f);
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		// theta = 45 degrees in radians
		var theta:Number = Math.PI / 4;
		movie.moveTo(r + 0.5, 0.5);
		movie.lineTo(nW - r - 0.5, 0.5);
		//angle is currently 90 degrees
		var angle:Number = -Math.PI / 2;
		// draw tr corner in two parts
		var cx:Number = nW - r - 0.5 + (Math.cos(angle + (theta / 2)) * r / Math.cos(theta / 2));
		var cy:Number = r + 0.5 + (Math.sin(angle + (theta / 2)) * r / Math.cos(theta / 2));
		var px:Number = nW - r - 0.5 + (Math.cos(angle + theta) * r);
		var py:Number = r + 0.5 + (Math.sin(angle + theta) * r);
		movie.curveTo(cx, cy, px, py);
		angle += theta;
		cx = nW - r - 0.5 + (Math.cos(angle + (theta / 2)) * r / Math.cos(theta / 2));
		cy = r + 0.5 + (Math.sin(angle + (theta / 2)) * r / Math.cos(theta / 2));
		px = nW - r - 0.5 + (Math.cos(angle + theta) * r);
		py = r + 0.5 + (Math.sin(angle + theta) * r);
		movie.curveTo(cx, cy, px, py);
		var bottom:Boolean = !data.border || data.border & 4;
		movie.lineTo(nW - 0.5, nH - (bottom ? 0.5 : 0));
		if(!bottom) movie.lineStyle(undefined);
		movie.lineTo(0.5, nH - (bottom ? 0.5 : 0));
		movie.lineStyle(1, 0x8f8f8f);
		movie.lineTo(0.5, r + 0.5);

		// draw tl corner
		angle = Math.PI;
		cx = r + 0.5 + (Math.cos(angle + (theta / 2)) * r / Math.cos(theta / 2));
		cy = r + 0.5 + (Math.sin(angle + (theta / 2)) * r / Math.cos(theta / 2));
		px = r + 0.5 + (Math.cos(angle+  theta) * r);
		py = r + 0.5 + (Math.sin(angle + theta) * r);
		movie.curveTo(cx, cy, px, py);
		angle += theta;
		cx = r + 0.5 + (Math.cos(angle + (theta / 2)) * r / Math.cos(theta / 2));
		cy = r + 0.5 + (Math.sin(angle + (theta / 2)) * r / Math.cos(theta / 2));
		px = r + 0.5 + (Math.cos(angle + theta) * r);
		py = r + 0.5 + (Math.sin(angle + theta) * r);
		movie.curveTo(cx, cy, px, py);

		movie.endFill();
		movie.lineStyle(undefined);
	}

	private function drawResizeTitle(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		drawBaseTitle(movie, nW, nH, data);
		var x:Number = nW - 14 - 8;
		var y:Number = Math.round((nH - 14) / 2);
		drawDrop(movie, x, y, 14, 14, 0x8add00, data);
		if(data.mode == "press" || data.mode == "over")
		{
			var clr:Number =  data.mode == "press" ? 0xffffff : 0;
			var alpha:Number =  data.mode == "press" ? 100 : 60;
			if(data.state == "sunken") drawPlus(movie, x, y, 14, 14, clr, alpha)
			else drawMinus(movie, x, y, 14, 14, clr, alpha);
		}
	}

	private function drawSingleArrow(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, dir:String, clr:Number, alpha:Number):Void
	{
		if(!alpha) alpha = 100;
		var bVert:Boolean = dir == "up" || dir == "down";
		var size:Number = bVert 
			? ((nW / 2 > nH) ? nH * 2 : nW)
			: ((nH / 2 > nW) ? nW * 2 : nH);
		size -= size % 2;
		var halfSize:Number = size / 2;
		var x:Number = nX + Math.round((nW - (bVert ? size : halfSize)) / 2);
		var y:Number = nY + Math.round((nH - (bVert ? halfSize : size)) / 2);
		switch(dir)
		{
			case "up":
				pseudo.Global.drawRect(movie, x, y + halfSize - 2, 1, 2, clr, alpha);
				pseudo.Global.drawRect(movie, x + size - 1, y + halfSize - 2, 1, 2, clr, alpha);
				for(var i:Number = 1; i < halfSize; i++)
				{
					pseudo.Global.drawRect(movie, x + i, y + halfSize - i - 2, 1, 3, clr, alpha);
					pseudo.Global.drawRect(movie, x + size - i - 1, y + halfSize - i - 2, 1, 3, clr, alpha);
				}
				break;
			case "down":
				pseudo.Global.drawRect(movie, x, y, 1, 2, clr, alpha);
				pseudo.Global.drawRect(movie, x + size - 1, y, 1, 2, clr, alpha);
				for(var i:Number = 1; i < halfSize; i++)
				{
					pseudo.Global.drawRect(movie, x + i, y + i - 1, 1, 3, clr, alpha);
					pseudo.Global.drawRect(movie, x + size - i - 1, y + i - 1, 1, 3, clr, alpha);
				}
				break;
			case "left":
				pseudo.Global.drawRect(movie, x + halfSize - 2, y, 2, 1, clr, alpha);
				pseudo.Global.drawRect(movie, x + halfSize - 2, y + size - 1, 2, 1, clr, alpha);
				for(var i:Number = 1; i < halfSize; i++)
				{
					pseudo.Global.drawRect(movie, x + halfSize - i - 2, y + i, 3, 1, clr, alpha);
					pseudo.Global.drawRect(movie, x + halfSize - i - 2, y + size - i - 1, 3, 1, clr, alpha);
				}
				break;
			case "right":
				pseudo.Global.drawRect(movie, x, y, 2, 1, clr, alpha);
				pseudo.Global.drawRect(movie, x, y + size - 1, 2, 1, clr, alpha);
				for(var i:Number = 1; i < halfSize; i++)
				{
					pseudo.Global.drawRect(movie, x + i - 1, y + i, 3, 1, clr, alpha);
					pseudo.Global.drawRect(movie, x + i - 1, y + size - i - 1, 3, 1, clr, alpha);
				}
				break;
		}
	}

	private function drawGo(movie:MovieClip, x:Number, y:Number, w:Number, h:Number, clr:Number):Void
	{
		drawSingleArrow(movie, x - 1, y + 6, w - 2, h - 12, "right", clr);
		drawSingleArrow(movie, x + 6, y + 6, w - 9, h - 12, "right", clr);
	}

	private function drawResizeBtnLayer(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		movie.clear();
		drawRoundDrop(movie, 0, 0, nW, nH, 0xa2d37c, data);
		if(data.mode == "press" || data.mode == "over")
		{
			var bSunken:Boolean = data.state == "sunken";
			var clr:Number = data.mode == "press" ? 0xffffff : 0;
			var alpha:Number = data.mode == "press" ? 100 : 60;
			switch(data.type)
			{
				case "resizeRight":
				case "resizeLeft":
					drawSingleArrow(movie, 4, 4, nW - 8, nH - 8, (bSunken && data.type == "resizeRight" ||
						!bSunken && data.type == "resizeLeft") ? "left" : "right", clr, alpha);
					break;
				case "resizeTop":
				case "resizeBottom":
					drawSingleArrow(movie, 4, 4, nW - 8, nH - 8, (bSunken && data.type == "resizeTop" ||
						!bSunken && data.type == "resizeBottom") ? "down" : "up", clr, alpha);
					break;
			}
		}
	}

	private function drawScrollLayer(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		movie.clear();
		var colors:Array = new Array(0xffffff, 0xffffff, 0xffffff);
		var alphas:Array = new Array(50, 100, 50);
		var ratios:Array = new Array(0, 180, 255);
		var matrix:Object = null;
		var bLow:Boolean = data.type == "scrollLow";
		if(data.dir == "vert")
		{
			var w:Number = nW * 4 / 11;
			var h:Number = nH / 3;
			var off:Number = bLow ? 1 : 0;
			matrix = {matrixType:"box", x:1, y:off, w:w, h:nH - (1 - off), r:0};
			movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
			movie.moveTo(1, off);
			var obj:Object = drawArc(movie, 1, off, w, -90, 90, h);
			var curX:Number = w + 1;
			var curY:Number = nH - h - (1 - off);
			movie.lineTo(curX, curY);
			obj = drawArc(movie, curX, curY, w, -90, 0, h);
			movie.lineTo(1, off);
			movie.endGradientFill();
			movie.beginFill(0, 80);
			w = nH / 3;
			h = nH / 5;
			movie.moveTo(nW / 2, bLow ? nH / 2 - h : nH / 2 + h);
			movie.lineTo(nW / 2 - w / 2, bLow ? nH / 2 + h : nH / 2 - h);
			movie.lineTo(nW / 2 + w / 2, bLow ? nH / 2 + h : nH / 2 - h);
			movie.lineTo(nW / 2, bLow ? nH / 2 - h : nH / 2 + h);
			movie.endFill();
		}
		else
		{
			var w:Number = nW / 3;
			var h:Number = nH * 4 / 11;
			var off:Number = data.type == "scrollLow" ? 1 : 0;
			matrix = {matrixType:"box", x:off, y:1, w:w - (1 - off), h:nH, r:Math.PI / 2};
			movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
			movie.moveTo(off, 1);
			var obj:Object = drawArc(movie, off, 1, w, 90, 180, h);
			var curX:Number = nW - w - (1 - off);
			var curY:Number = h + 1;
			movie.lineTo(curX, curY);
			obj = drawArc(movie, curX, curY, w, 90, 270, h);
			movie.lineTo(off, 1);
			movie.endFill();
			movie.beginFill(0, 80);
			w = nW / 5;
			h = nW / 3;
			movie.moveTo(bLow ? nW / 2 - w : nW / 2 + w, nH / 2);
			movie.lineTo(bLow ? nW / 2 + w : nW / 2 - w, nH / 2 - h / 2);
			movie.lineTo(bLow ? nW / 2 + w : nW / 2 - w, nH / 2 + h / 2);
			movie.lineTo(bLow ? nW / 2 - w : nW / 2 + w, nH / 2);
			movie.endFill();
		}
		delete colors;
		delete alphas;
		delete ratios;
		delete matrix;
		movie.drawRect(0, 0, nW, nH, 0, 0);
	}

	//
	// different shapes drawing routine
	//
	private function drawMinus(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void
	{
		var w:Number = 8;
		var h:Number = 2;
		var x:Number = nX + Math.round((nW - w) / 2);
		var y:Number = nY + Math.round((nH - h) / 2);
		pseudo.Global.drawRect(movie, x, y, w, h, clr, alpha);
	}

	private function drawPlus(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void
	{
		var size:Number = 8;
		var thick:Number = 2;
		var x:Number = nX + Math.round((nW - size) / 2);
		var y:Number = nY + Math.round((nH - size) / 2);
		var cx:Number = nX + Math.round((nW - thick) / 2);
		var cy:Number = nY + Math.round((nH - thick) / 2);
		var dh:Number = Math.round(size - thick) / 2;
		pseudo.Global.drawRect(movie, x, cy, size, thick, clr, alpha);
		pseudo.Global.drawRect(movie, cx, y, thick, dh, clr, alpha);
		pseudo.Global.drawRect(movie, cx, cy + thick, thick, dh, clr, alpha);
	}

	private function drawCross(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void
	{
		var size:Number = 8;
		var size2:Number = Math.round(size / 2);
		var x:Number = nX + Math.round((nW - size) / 2);
		var y:Number = nY + Math.round((nH - size) / 2);
		drawLine(movie, x, y, x + size - 1, y + size - 1, clr, alpha);
		drawLine(movie, x + 1, y, x + size - 1, y + size - 2, clr, alpha);
		drawLine(movie, x, y + 1, x + size - 2, y + size - 1, clr, alpha);

		drawLine(movie, x, y + size - 1, x + size2 - 2, y + size2 + 1, clr, alpha);
		drawLine(movie, x + 1, y + size - 1, x + size2 - 1, y + size2 + 1, clr, alpha);
		drawLine(movie, x, y + size - 2, x + size2 - 2, y + size2, clr, alpha);

		drawLine(movie, x + size2 + 1, y + size2 - 2, x + size - 1, y, clr, alpha);
		drawLine(movie, x + size2 + 1, y + size2 - 1, x + size - 1, y + 1, clr, alpha);
		drawLine(movie, x + size2, y + size2 - 2, x + size - 2, y, clr, alpha);
	}

	private function drawFillRect(movie:MovieClip, x:Number, y:Number, w:Number, h:Number):Void
	{
		movie.moveTo(x, y);
		movie.lineTo(x + w, y);
		movie.lineTo(x + w, y + h);
		movie.lineTo(x, y + h);
		movie.lineTo(x, y);
	}

	private function drawScrollBack(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		movie.clear();
		var bVert:Boolean = data.dir == "vert";
		var colors:Array = new Array(0xcacaca, 0xffffff);
		var alphas:Array = new Array(100, 100);
		var ratios:Array = new Array(0, 188);
		var matrix:Object = {matrixType:"box", x:0, y:0, w:nW, h:nH, r:bVert ? 0 : Math.PI / 2};
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		drawFillRect(movie, 0, 0, nW, nH);
		movie.endFill();
		delete colors;
		delete alphas;
		delete ratios;
		delete matrix;
		colors = new Array(0, 0xffffff);
		alphas = new Array(30, 0);
		ratios = new Array(0, 180);
		var size:Number = Math.min(nW, nH);
		var x:Number = bVert ? 0 : size;
		var y:Number = bVert ? size : 0;
		matrix = {matrixType:"box", x:x, y:y, w:size, h:size, r:bVert ? Math.PI / 2 : 0};
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		drawOvalRect(movie, x, y, size, size);
		movie.endFill();
		delete matrix;
		x = bVert ? 0 : nW - size * 2;
		y = bVert ? nH - size * 2: 0;
		matrix = {matrixType:"box", x:x, y:y, w:size, h:size, r:bVert ? Math.PI * 3 / 2 : Math.PI};
		movie.beginGradientFill("linear", colors, alphas, ratios, matrix);
		drawOvalRect(movie, x, y, size, size);
		movie.endFill();
		delete colors;
		delete alphas;
		delete ratios;
		delete matrix;
	}

	//
	// drops drawing routine
	//
	private function rgb2hsb(colRGB:Number):Object
	{
		var red:Number = (colRGB & 0xff0000) >> 16;
		var gre:Number = (colRGB & 0x00ff00) >> 8;
		var blu:Number = colRGB & 0x0000ff;
		var max:Number = Math.max(red, Math.max(gre, blu));
		var min:Number = Math.min(red, Math.min(gre, blu));
		var hsb:Object = new Object({h:0, s:0, b:Math.round(max * 100 / 255)});
		if(max != min)
		{ 
			hsb.s = Math.round(100 * (max - min) / max);
			var tmpR:Number = (max - red) / (max - min);
			var tmpG:Number = (max - gre) / (max - min);
			var tmpB:Number = (max - blu) / (max - min);
			switch(max)
			{
				case red: hsb.h = tmpB - tmpG; break;
				case gre: hsb.h = 2 + tmpR - tmpB; break;
				case blu: hsb.h = 4 + tmpG - tmpR; break;
			}
			hsb.h = (Math.round(hsb.h * 60) + 360) % 360;
		}
		return hsb;
	}

	private function hsb2rgb(hsb:Object):Number
	{
		var red:Number = hsb.b;
		var gre:Number = hsb.b;
		var blu:Number = hsb.b;
		if(hsb.s)
		{ // if not grey
			var hue:Number = (hsb.h + 360) % 360;
			var dif:Number = (hue % 60) / 60;
			var mid1:Number = hsb.b * (100 - hsb.s * dif) / 100;
			var mid2:Number = hsb.b * (100 - hsb.s * (1 - dif)) / 100;
			var min:Number = hsb.b * (100 - hsb.s) / 100;
			switch(Math.floor(hue / 60))
			{
				case 0: red = hsb.b; gre = mid2; blu = min; break;
				case 1: red = mid1; gre = hsb.b; blu = min; break;
				case 2: red = min; gre = hsb.b; blu = mid2; break;
				case 3: red = min; gre = mid1; blu = hsb.b; break;
				case 4: red = mid2; gre = min; blu = hsb.b; break;
				default: red = hsb.b; gre = min; blu = mid1; break;
			}
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -