📄 xplook.as
字号:
//#initclip 10_global.XPLook = function() { super();};_global.XPLook.prototype = new Object();// data {className - component name, type - type of component, mode - press, over,..., pLink - link to an object, clr - color}_global.XPLook.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; default: clr = globalStyleFormat[data.pLink._face]; break; } data.clr = clr; 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 = clr; this.drawComboBoxBtn(movie, nW, nH, data); break; case data.pLink.BTN_TYPE_SCROLL: movie.clear(); this.drawScroll(movie, nW, nH, clr, globalStyleFormat[data.pLink._highlight], data); //trace('w ' + movie._width + ' w2 ' + nW); break; case data.pLink.BTN_TYPE_SCROLL_LOW: case data.pLink.BTN_TYPE_SCROLL_HI: data.clr = clr; 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, 0x8f8f8f); break; case "comboBox": drawLayer(movie, nW, nH, 0xffffff, 0x303030, data.border); break; default: movie.clear(); this.drawRoundBtn(movie, 0, 0, nW, nH, data.clr, globalStyleFormat[data.pLink._highlight], data); break; }}_global.XPLook.prototype.drawScrollLayer = function(movie:MovieClip, nW:Number, nH:Number, data:Object):Void{ this.drawSquareBtn(movie, 0, 0, nW, nH, data.clr, globalStyleFormat[data.pLink._highlight], data); var dir:String = ""; switch(data.dir) { case "vert": switch(data.type) { case data.pLink.BTN_TYPE_SCROLL_LOW: dir="up"; break; case data.pLink.BTN_TYPE_SCROLL_HI: dir="down"; break; } break; case "horz": switch(data.type) { case data.pLink.BTN_TYPE_SCROLL_LOW: dir="left"; break; case data.pLink.BTN_TYPE_SCROLL_HI: dir="right"; break; } break; } if(dir) this.drawSingleArrow(movie, 3, 3, nW - 6, nH - 6, dir, globalStyleFormat[data.pLink._arrow_xp]);}_global.XPLook.prototype.drawSingleArrow = function(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": this.drawRect(movie, x, y + halfSize - 2, 1, 2, clr, alpha); this.drawRect(movie, x + size - 1, y + halfSize - 2, 1, 2, clr, alpha); for(var i:Number = 1; i < halfSize; i++) { this.drawRect(movie, x + i, y + halfSize - i - 2, 1, 3, clr, alpha); this.drawRect(movie, x + size - i - 1, y + halfSize - i - 2, 1, 3, clr, alpha); } break; case "down": this.drawRect(movie, x, y, 1, 2, clr, alpha); this.drawRect(movie, x + size - 1, y, 1, 2, clr, alpha); for(var i:Number = 1; i < halfSize; i++) { this.drawRect(movie, x + i, y + i - 1, 1, 3, clr, alpha); this.drawRect(movie, x + size - i - 1, y + i - 1, 1, 3, clr, alpha); } break; case "left": this.drawRect(movie, x + halfSize - 2, y, 2, 1, clr, alpha); this.drawRect(movie, x + halfSize - 2, y + size - 1, 2, 1, clr, alpha); for(var i:Number = 1; i < halfSize; i++) { this.drawRect(movie, x + halfSize - i - 2, y + i, 3, 1, clr, alpha); this.drawRect(movie, x + halfSize - i - 2, y + size - i - 1, 3, 1, clr, alpha); } break; case "right": this.drawRect(movie, x, y, 2, 1, clr, alpha); this.drawRect(movie, x, y + size - 1, 2, 1, clr, alpha); for(var i:Number = 1; i < halfSize; i++) { this.drawRect(movie, x + i - 1, y + i, 3, 1, clr, alpha); this.drawRect(movie, x + i - 1, y + size - i - 1, 3, 1, clr, alpha); } break; }}_global.XPLook.prototype.drawScroll = function(movie:MovieClip, nW:Number, nH:Number, col:Number, colBg:Number, data:Object):Void{ this.drawRoundBtn(movie, 0.5, 0, nW, nH, col, colBg, data); if(data.dir == "vert") { if(nH > 15) { var x:Number = 3; var y:Number = Math.round((nH - 8) / 2); var w:Number = nW - 6; for(var i:Number = 0; i < 8; i++) this.drawRect(movie, x + (i % 2 ? 1 : 0), y + i, w, 1, i % 2 ? this.ex_darker(col, 0.8) : this.ex_brighter(col, 0.7), 100); } } else { if(nW > 15) { var x:Number = Math.round((nW - 8) / 2); var y:Number = 3; var h:Number = nH - 6; for(var i:Number = 0; i < 8; i++) this.drawRect(movie, x + i, y + (i % 2 ? 1 : 0), h, i % 2 ? this.ex_darker(col, 0.8) : this.ex_brighter(col, 0.7), 1); } }}_global.XPLook.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, 0xfcfcfe); 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.lineStyle(1, data.clr); movie.beginGradientFill("linear", colors, alphas, ratios, matrix); this.drawFillRect(movie, 0, 0, nW, nH); movie.endFill(); movie.lineStyle(undefined); delete colors; delete alphas; delete ratios; delete matrix;}_global.XPLook.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.XPLook.prototype.drawRoundBtn = function(movie:MovieClip, x:Number, y:Number, w:Number, h:Number, col:Number, colBorder:Number, data:Object):Void{ movie.clear(); var r:Number = Math.min(data.type == data.pLink.BTN_TYPE_SCROLL ? 2 : 4, Math.min(w, h) / 2); var d:Number = data.type == data.pLink.BTN_TYPE_SCROLL ? 0.5 : 0; var bVert:Boolean = w < h; this.fillRoundRect(movie, x, y, w, h, r, col, 100, colBorder, 100); var colors:Array = new Array(0xffffff, 0xffffff, 0xffffff, 0xffffff); var alphas:Array = new Array(50, 65, 45, 0); var ratios:Array = new Array(0, 60, 120, 255); var flare:Number = (bVert ? w : h) * 2 / 3; var matrix:Object = bVert ? {matrixType:"box", x:1+d, y:1, w:flare, h:h - 2, r:0} : {matrixType:"box", x:1+d, y:1, w:w - 2, h:flare, r:Math.PI / 2}; movie.beginGradientFill("linear", colors, alphas, ratios, matrix); this.drawRoundRect(movie, 1+d, 1, bVert ? flare + 1 : w - 1, bVert ? h - 1 : flare + 1, Math.max(0, r - 0.5)); movie.endFill(); switch(data.mode) { case data.pLink.STATE_PRESS: this.fillRoundRect(movie, x, y, w, h, r, 0, 10); break; case data.pLink.STATE_OVER : this.fillRoundRect(movie, x, y, w, h, r, this.darker(0xffffff), 20); break; }}_global.XPLook.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 var bFaded:Boolean = data.faded && data.mode == data.pLink.STATE_OUT; switch(data.type) { case data.pLink.BTN_TYPE_HIDE: this.drawSquareBtn(movie, 0, 0, nW, nH, bFaded ? 0x78c5fe : data.clr, globalStyleFormat[data.pLink._highlight], data); var nOffX:Number = Math.round((0.6*nW) / 2); var nOffY:Number = Math.round((0.5*nH) / 2); this.drawRect(movie, nOffX - 1/16*nW, nOffY + 0.4*nW, 0.4*nW, 0.18*nH, globalStyleFormat[data.pLink._arrow]); break; case data.pLink.BTN_TYPE_MINIMIZE: this.drawSquareBtn(movie, 0, 0, nW, nH, bFaded ? 0x78c5fe : data.clr, globalStyleFormat[data.pLink._highlight], data); var nOffX:Number = Math.round((nW - 9) / 2); var nOffY:Number = Math.round((nH - 9) / 2); var clr:Number = globalStyleFormat[data.pLink._arrow]; if(data.state == "sunken") { this.drawRect(movie, nOffX + 2, nOffY, 7, 2, clr); this.drawRect(movie, nOffX + 8, nOffY + 2, 1, 4, clr); this.drawRect(movie, nOffX, nOffY + 3, 7, 2, clr); this.drawRect(movie, nOffX, nOffY + 5, 1, 4, clr); this.drawRect(movie, nOffX + 1, nOffY + 8, 6, 1, clr); this.drawRect(movie, nOffX + 6, nOffY + 5, 1, 4, clr); } else { this.drawRect(movie, nOffX, nOffY, 9, 2, clr); this.drawRect(movie, nOffX, nOffY + 2, 1, 7, clr); this.drawRect(movie, nOffX + 1, nOffY + 8, 8, 1, clr); this.drawRect(movie, nOffX + 8, nOffY + 2, 1, 7, clr); } break; case data.pLink.BTN_TYPE_CLOSE: if(nW > nH) this.drawRoundBtn(movie, 0, 0, nW, nH, data.clr, globalStyleFormat[data.pLink._highlight], data); else this.drawSquareBtn(movie, 0, 0, nW, nH, bFaded ? 0xf9aa7b : data.clr, globalStyleFormat[data.pLink._highlight], data); this.drawCross(movie, 0, 0, nW, nH, globalStyleFormat[data.pLink._arrow]); break; }}_global.XPLook.prototype.drawSquareBtn = function(movie:MovieClip, x:Number, y:Number, w:Number, h:Number, col:Number, colBorder:Number, data:Object):Void{ movie.clear(); var r:Number = Math.min(data.type == data.pLink.BTN_TYPE_SCROLL_LOW || data.type == data.pLink.BTN_TYPE_SCROLL_HI ? 1 : 3, Math.min(w, h) / 2); this.fillRoundRect(movie, x + 0.5, y + 0.5, w - 0.5, h - 0.5, r, col, 100, colBorder, 100); var colors:Array = new Array(0xffffff, 0xffffff); var alphas:Array = new Array(60, 0); var ratios:Array = new Array(40, 255); var flareH:Number = h * 2 / 3; var matrix:Object = {a:w - 2, b:0, c:0, d:0, e:flareH, f:0, g:w / 4, h:h / 4, i:1}; movie.beginGradientFill("radial", colors, alphas, ratios, matrix); this.drawRoundRect(movie, 1, 1, w - 1, flareH + 1, Math.max(0, r - 0.5)); movie.endFill(); switch(data.mode) { case data.pLink.STATE_PRESS: this.fillRoundRect(movie, x, y, w, h, r, 0, 10); break; case data.pLink.STATE_OVER : this.fillRoundRect(movie, x, y, w, h, r, 0xffffff, 20); break; }}_global.XPLook.prototype.drawCross = function(movie:MovieClip, nX:Number, nY:Number, nW:Number, nH:Number, clr:Number, alpha:Number):Void{ var size:Number = 0.5*16; var size2:Number = Math.round(size / 2); var bx:Number = nX + Math.round((nW - 0.5*nW) / 2); var by:Number = nY + Math.round((nH - 0.5*nH) / 2); var dX:Number = 1; var dY:Number = 1; var mc:MovieClip = movie.createEmptyMovieClip('mc', 100); mc._x = bx; mc._y = by; var x:Number = 0; var y:Number = 0; this.drawLine(mc, x, y, x + size - dX, y + size - dY, clr, alpha); this.drawLine(mc, x + dX, y, x + size - dX, y + size - 2*dY, clr, alpha); this.drawLine(mc, x, y + dY, x + size - 2*dX, y + size - dY, clr, alpha); this.drawLine(mc, x, y + size - dY, x + size2 - 2*dX, y + size2 + dY, clr, alpha); this.drawLine(mc, x + dX, y + size - dY, x + size2 - dX, y + size2 + dY, clr, alpha); this.drawLine(mc, x, y + size - 2*dY, x + size2 - 2*dX, y + size2, clr, alpha);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -