📄 aqualook.as
字号:
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 + -