📄 aqualook.as
字号:
//#initclip 10_global.AquaLook = function() { super();};_global.AquaLook.prototype = new Object();// data {className - component name, type - type of component, mode - press, over,..., pLink - link to an object, clr - color}_global.AquaLook.prototype.draw = function(movie:MovieClip, nW:Number, nH:Number, data:Object):Void{ if(movie == undefined) return; var clr = 0; switch(data.mode) { case data.pLink.STATE_OUT : clr = globalStyleFormat[data.pLink._face]; break; case data.pLink.STATE_OVER : clr = this.ex_brighter(globalStyleFormat[data.pLink._face], 0.77); break; case data.pLink.STATE_PRESS : clr = globalStyleFormat[data.pLink._face]; break; case data.pLink.STATE_DISABLED : clr = this.brighter(this.brighter(globalStyleFormat[data.pLink._face])); break; } data.clr = clr; //trace('W ' + nW + ' H ' + nH + ' this ' + movie); switch(data.type) { case data.pLink.BG_TYPE_COMBO: data.clr = globalStyleFormat[data.pLink._background]; this.drawComboBox(movie, nW, nH, data); break; case data.pLink.BG_TYPE_SCROLL: data.clr = globalStyleFormat[data.pLink._scroll_track]; this.drawScrollBack(movie, nW, nH, data); break; case data.pLink.BTN_TYPE_COMBO: //data.clr = globalStyleFormat[data.pLink._face]; data.clr = globalStyleFormat[data.pLink._scroll_track]; this.drawComboBoxBtn(movie, nW, nH, data); break; case data.pLink.BTN_TYPE_SCROLL: movie.clear(); //data.clr = globalStyleFormat[data.pLink._scroll_face]; this.drawRoundDrop(movie, 0, 0, nW, nH, data.clr, data); break; case data.pLink.BTN_TYPE_SCROLL_LOW: case data.pLink.BTN_TYPE_SCROLL_HI: data.clr = globalStyleFormat[data.pLink._scroll_arrow]; this.drawScrollLayer(movie, nW, nH, data); break; case data.pLink.BTN_TYPE_HIDE: case data.pLink.BTN_TYPE_MINIMIZE: case data.pLink.BTN_TYPE_CLOSE: this.drawTitleButton(movie, nW, nH, data); break; case "resizeHandle": drawResizeHandleBtn(movie, nW, nH, data.clr); //! break; case data.pLink.BTN_TYPE_RECT: drawLayer(movie, nW, nH, 0xffffff, data.clr, data.border);//! break; default: movie.clear(); this.drawRoundDrop(movie, 0, 0, nW, nH, data.clr, data); break; }}_global.AquaLook.prototype.drawScrollLayer = function(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 bLow:Boolean = data.type == data.pLink.BTN_TYPE_SCROLL_LOW; if(data.dir == "vert") { var w:Number = nW * 4 / 11; var h:Number = nH / 3; var off:Number = bLow ? 1 : 0; var matrix:Object = {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 = this.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 = this.drawArc(movie, curX, curY, w, -90, 0, h); movie.lineTo(1, off); movie.endGradientFill(); //1) color of arrow 2) alpha 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 == data.pLink.BTN_TYPE_SCROLL_LOW ? 1 : 0; var matrix:Object = {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 = this.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 = this.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);}_global.AquaLook.prototype.drawArc = function(movie:MovieClip, x:Number, y:Number, radius:Number, arc:Number, startAngle:Number, yRadius:Number, color:Number):Object{ if(color != null && color != undefined) movie.lineStyle(1, color, 100); // if yRadius is undefined, yRadius = radius if (yRadius == undefined) yRadius = radius; // Init vars var segAngle, theta, angle, angleMid, segs, ax, ay, bx, by, cx, cy:Number; // no sense in drawing more than is needed :) if (Math.abs(arc) > 360) arc = 360; segs = Math.ceil(Math.abs(arc) / 45); // Now calculate the sweep of each segment segAngle = arc / segs; // The math requires radians rather than degrees. To convert from degrees // use the formula (degrees/180)*Math.PI to get radians. theta = -(segAngle / 180) * Math.PI; // convert angle startAngle to radians angle = -(startAngle / 180) * Math.PI; // find our starting points (ax,ay) relative to the specified x,y ax = x - Math.cos(angle) * radius; ay = y - Math.sin(angle) * yRadius; // if our arc is larger than 45 degrees, draw as 45 degree segments // so that we match Flash's native circle routines. if (segs > 0) { // Loop for drawing arc segments for (var i = 0; i < segs; i++) { // increment our angle angle += theta; // find the angle halfway between the last angle and the new angleMid = angle-(theta / 2); // calculate our end point bx = ax + Math.cos(angle) * radius; by = ay + Math.sin(angle) * yRadius; // calculate our control point cx = ax + Math.cos(angleMid) * (radius / Math.cos(theta / 2)); cy = ay + Math.sin(angleMid) * (yRadius / Math.cos(theta / 2)); // draw the arc segment movie.curveTo(cx, cy, bx, by); } } return {x:bx, y:by};}_global.AquaLook.prototype.drawScrollBack = function(movie:MovieClip, nW:Number, nH:Number, data:Object):Void{ movie.clear(); var bVert:Boolean = data.dir == "vert"; var colors:Array = new Array(data.clr, 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); this.drawFillRect(movie, 0, 0, nW, nH); movie.endFill(); delete colors; delete alphas; delete ratios; delete matrix; var colors:Array = new Array(globalStyleFormat[data.pLink._scroll_track], 0xffffff); var alphas:Array = new Array(30, 0); var ratios:Array = new Array(0, 180); var size:Number = Math.min(nW, nH); var x:Number = bVert ? 0 : size; var y:Number = bVert ? size : 0; var matrix:Object = {matrixType:"box", x:x, y:y, w:size, h:size, r:bVert ? Math.PI / 2 : 0}; movie.beginGradientFill("linear", colors, alphas, ratios, matrix); this.drawOvalRect(movie, x, y, size, size); movie.endFill(); delete matrix; x = bVert ? 0 : nW - size * 2; y = bVert ? nH - size * 2: 0; var matrix:Object = {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); this.drawOvalRect(movie, x, y, size, size); movie.endFill(); delete colors; delete alphas; delete ratios; delete matrix;}_global.AquaLook.prototype.drawFillRect = function(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);}_global.AquaLook.prototype.drawTitleButton = function(movie:MovieClip, nW:Number, nH:Number, data:Object):Void{ movie.clear(); movie._alpha = 100; // xxx this line fixes alpha value, changed in other themes if(!data.faded || data.mode != "out") { var clr:Number = data.mode == "press" ? 0xffffff : 0; var alpha:Number = data.mode == "press" ? 100 : 60; switch(data.type) { case data.pLink.BTN_TYPE_HIDE: this.drawDrop(movie, 0, 0, nW, nH, data.clr, data); if(data.mode == "press" || data.mode == "over") this.drawMinus(movie, 0, 0, nW, nH, clr, alpha); break; case data.pLink.BTN_TYPE_MINIMIZE: this.drawDrop(movie, 0, 0, nW, nH, data.clr, data); if(data.mode == "press" || data.mode == "over") this.drawPlus(movie, 0, 0, nW, nH, clr, alpha); break; case data.pLink.BTN_TYPE_CLOSE: if(nW > nH) this.drawRoundDrop(movie, 0, 0, nW, nH, data.clr, data); else this.drawDrop(movie, 0, 0, nW, nH, data.clr, data); if(data.mode == "press" || data.mode == "over") this.drawCross(movie, 0, 0, nW, nH, clr, alpha); break; } } else drawDrop(movie, 0, 0, nW, nH, 0xf0f0f0);}_global.AquaLook.prototype.drawMinus = function(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void{ var w:Number = 0.5*16; var h:Number = 0.15*16; var bx:Number = nX + Math.round((nW - 0.5*nW) / 2); var by:Number = nY + Math.round((nH - 0.15*nH) / 2); var mc:MovieClip = movie.createEmptyMovieClip('mc', 100); mc._x = bx; mc._y = by; var x:Number = 0; var y:Number = 0; this.drawRect(mc, x, y, w, h, clr, alpha); mc._width = 0.5*nW; mc._height = 0.15*nH;}_global.AquaLook.prototype.drawPlus = function(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void{ var size:Number = 0.5*nW; var thick:Number = 0.1*nH; 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; this.drawRect(movie, x, cy, size, thick, clr, alpha); this.drawRect(movie, cx, y, thick, dh, clr, alpha); this.drawRect(movie, cx, cy + thick, thick, dh, clr, alpha);}_global.AquaLook.prototype.drawCross = function(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void{ var prop:Number = 0.5; var size:Number = prop*16; var size2:Number = Math.round(size / 2); var bx:Number = nX + Math.round((nW - prop*nW) / 2); var by:Number = nY + Math.round((nH - prop*nH) / 2); var dX:Number = 1; var dY:Number = 1; var mc:MovieClip = movie.createEmptyMovieClip('mc', 100); mc._x = bx; mc._y = by;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -