package skins { import flash.display.GradientType; import flash.geom.Matrix; import mx.controls.Alert; import mx.controls.scrollClasses.ScrollBar; import mx.skins.Border; import mx.utils.ColorUtil; public class VScroll extends Border { override public function get measuredWidth():Number { return ScrollBar.THICKNESS; } override public function get measuredHeight():Number { return 11; } private var colBackground: uint; private var colBorder: uint; private var colAlt: uint; private var borderOutWidth: Number = 1; private var colBorderOut: uint; private var colBorderOutAlt: uint; private var colArrow: uint; private var padding: Number = 2; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); graphics.clear(); unscaledWidth -= 1; colBorder = getStyle('borderColor'); colBackground = getStyle('fillColors')[0]; colBorderOut = colBackground; colBorderOutAlt = ColorUtil.adjustBrightness(colBorderOut, 150); colArrow = ColorUtil.adjustBrightness(colBorderOut, 200); switch (name) { case "thumbDownSkin": colBackground = ColorUtil.adjustBrightness(getStyle('fillColors')[0], 60); break; default: break; } colAlt = ColorUtil.adjustBrightness(colBackground, 90); graphics.lineStyle(1, colBorder, 1); var matrix: Matrix = new Matrix(); matrix.createGradientBox(unscaledWidth, unscaledHeight, 0, 0, 0); graphics.lineStyle(0,0,0); drawRoundRect( padding, padding, unscaledWidth-padding*2, unscaledHeight-padding*2, 3, [colBorderOut, colBorderOutAlt], [1, 1], matrix, GradientType.LINEAR, [0, 255]); colBorder = colBackground; graphics.lineStyle(1, colBorder, 0.5); drawRoundRect( padding+borderOutWidth, padding+borderOutWidth, unscaledWidth-borderOutWidth*2 - padding*2, unscaledHeight-borderOutWidth*2 - padding*2 - 1, 2, [colAlt, colBackground], [1, 1], matrix, GradientType.LINEAR, [0, 255]); if (unscaledHeight > 14) { with (graphics) { var cX: int = unscaledWidth/2; var cY: int; lineStyle(0, colArrow, 1); beginFill(colArrow, 1); cY = unscaledHeight/2 - 4; moveTo(cX - 2, cY + 3); lineTo(cX, cY-1); lineTo(cX + 2, cY + 3); lineTo(cX - 2, cY + 3); cY = unscaledHeight/2 + 4; moveTo(cX - 2, cY - 3); lineTo(cX, cY + 1); lineTo(cX + 2, cY - 3); lineTo(cX - 2, cY - 3); endFill(); } } } } }