| 16 | | public function RoundRectButtonSprite() |
| | 19 | protected var mBorderColor:uint; |
| | 20 | protected var mLeftRounded:Boolean; |
| | 21 | protected var mRightRounded:Boolean; |
| | 22 | protected var mR:Number = 6; |
| | 23 | protected const APOS:Number = 0.292893219; |
| | 24 | |
| | 25 | private var mGradColors:Array; |
| | 26 | private var mGradAlphas:Array; |
| | 27 | private var mGradRatios:Array; |
| | 28 | private var mGradMatrix:Matrix; |
| | 29 | private var mHighlightBorderColor:uint = 0xffffff; |
| | 30 | |
| | 31 | public function RoundRectButtonSprite(leftr:Boolean, rightr:Boolean) |
| | 53 | g.lineStyle(); |
| | 54 | g.beginGradientFill(GradientType.LINEAR, mGradColors, mGradAlphas, mGradRatios, mGradMatrix); |
| | 55 | drawBorder(g, w, h, 0, false); |
| | 56 | g.endFill(); |
| | 57 | |
| | 58 | g.lineStyle(1, mHighlightBorderColor, 0.5, true); |
| | 59 | drawBorder(g, w, h, 1, false); |
| | 60 | |
| | 61 | g.lineStyle(1, mBorderColor, 0.3, true); |
| | 62 | drawBorder(g, w, h, 0, false); |
| | 64 | |
| | 65 | protected function drawBorder(g:Graphics, w:Number, h:Number, padding:Number, opened:Boolean):void |
| | 66 | { |
| | 67 | if (mLeftRounded && mRightRounded) |
| | 68 | { |
| | 69 | g.moveTo(mR+padding, h-1-padding); |
| | 70 | roundedLeft(w, h, padding); |
| | 71 | g.lineTo(w-1-mR-padding, padding); |
| | 72 | roundedRight(w, h, padding); |
| | 73 | } |
| | 74 | else if (mLeftRounded) |
| | 75 | { |
| | 76 | g.moveTo(w-1-padding, h-1-padding); |
| | 77 | g.lineTo(mR+padding, h-1-padding); |
| | 78 | roundedLeft(w, h, padding); |
| | 79 | g.lineTo(w-1-padding, padding); |
| | 80 | } |
| | 81 | else if (mRightRounded) |
| | 82 | { |
| | 83 | g.moveTo(padding, padding); |
| | 84 | g.lineTo(w-1-mR-padding, padding); |
| | 85 | roundedRight(w, h, padding); |
| | 86 | g.lineTo(padding, h-1-padding); |
| | 87 | } |
| | 88 | } |
| | 89 | |
| | 90 | protected function roundedLeft(w:Number, h:Number, padding:Number):void |
| | 91 | { |
| | 92 | var A:Number = APOS*mR; |
| | 93 | var g:Graphics = graphics; |
| | 94 | |
| | 95 | g.curveTo(padding+A*2, h-1-padding, padding+A, h-1-padding - A); |
| | 96 | g.curveTo(padding, h-1-padding - A*2, padding, h-1-padding - mR); |
| | 97 | g.lineTo(padding, padding+mR); |
| | 98 | g.curveTo(padding, padding+A*2, padding+A, padding+A); |
| | 99 | g.curveTo(padding+A*2, padding, padding+mR, padding); |
| | 100 | } |
| | 101 | |
| | 102 | protected function roundedRight(w:Number, h:Number, padding:Number):void |
| | 103 | { |
| | 104 | var A:Number = APOS*mR; |
| | 105 | var g:Graphics = graphics; |
| | 106 | |
| | 107 | g.curveTo(w-1-padding-A*2, padding , w-1-padding-A, padding+A); |
| | 108 | g.curveTo(w-1-padding , padding+A*2, w-1-padding , padding+mR); |
| | 109 | g.lineTo(w-1-padding, h-1-padding-mR); |
| | 110 | g.curveTo(w-1-padding, h-1-padding-A*2, w-1-padding-A, h-1-padding-A); |
| | 111 | g.curveTo(w-1-padding-A*2, h-1-padding, w-1-padding-mR, h-1-padding); |
| | 112 | } |
| | 113 | |