package skins { import flash.display.GradientType; import flash.geom.Matrix; import mx.skins.ProgrammaticSkin; import mx.utils.ColorUtil; public class ButtonSkin extends ProgrammaticSkin { private var colBackground: uint = 0xFFFFFF; private var colAlt: uint = 0xFFFFFF; private var colBorder: uint = 0; private var colBorderAlt: uint = 0; private var borderThickness: uint = 2; private var borderAlpha: Number = 1; private var backgroundAlpha: Number = 1; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { graphics.clear(); colBorder= getStyle('borderColor'); colBackground = getStyle('fillColors')[0]; var matrix: Matrix = new Matrix(); matrix.createGradientBox(unscaledWidth, unscaledHeight, Math.PI/2, 0, 0); if ('downSkin' == name) { colBorderAlt = ColorUtil.adjustBrightness(colBackground, 0); colBorder = ColorUtil.adjustBrightness(colBackground, 80); } else { colBorderAlt = ColorUtil.adjustBrightness(colBackground, 170); colBorder = ColorUtil.adjustBrightness(colBackground, 20); } graphics.lineStyle(borderThickness, colBorder, borderAlpha); graphics.lineGradientStyle( GradientType.LINEAR, [colBorderAlt, colBorder], [1, 1], [0, 255], matrix ); switch (name) { case "upSkin": break; case "overSkin": colBackground = ColorUtil.adjustBrightness(getStyle('fillColors')[0], 60); break; case "downSkin": break; case "disabledSkin": alpha = 0.3; break; } colAlt = ColorUtil.adjustBrightness(colBackground, 110); drawRoundRect( 0, 0, unscaledWidth, unscaledHeight, 5, [colAlt, colBackground], [backgroundAlpha, backgroundAlpha], matrix, GradientType.LINEAR, [0, 255]); } } }