1
8
9 import com.sekati.geom.Point;
10
11
14 class com.sekati.draw.Ring {
15
16
26 public static function draw(mc:MovieClip, p:Point, outerRadius:Number, innerRadius:Number, fillColor:Number, fillAlpha:Number):Void {
27 var fc:Number = (!fillColor) ? 0x000000 : fillColor;
28 var fa:Number = (isNaN( fillAlpha )) ? 100 : fillAlpha;
29 var x:Number = p.x;
30 var y:Number = p.y;
31 var r1:Number = outerRadius;
32 var r2:Number = innerRadius;
33 var _rad:Number = Math.PI / 180;
34
35 mc.clear( );
36 mc.beginFill( fc, fa );
37
38 mc.moveTo( 0, 0 );
39 mc.lineTo( r1, 0 );
40
41
42 var a:Number = 0.268;
43
44 var endx:Number;
45 var endy:Number;
46 var ax:Number;
47 var ay:Number;
48 for (var i:Number = 0; i < 12 ; i++) {
49 endx = r1 * Math.cos( (i + 1) * 30 * _rad );
50 endy = r1 * Math.sin( (i + 1) * 30 * _rad );
51 ax = endx + r1 * a * Math.cos( ((i + 1) * 30 - 90) * _rad );
52 ay = endy + r1 * a * Math.sin( ((i + 1) * 30 - 90) * _rad );
53 mc.curveTo( ax, ay, endx, endy );
54 }
55
56
57 mc.moveTo( 0, 0 );
58 mc.lineTo( r2, 0 );
59
60 for (var j:Number = 12; j > 0 ; j--) {
61 endx = r2 * Math.cos( (j - 1) * 30 * _rad );
62 endy = r2 * Math.sin( (j - 1) * 30 * _rad );
63 ax = endx + r2 * (0 - a) * Math.cos( ((j - 1) * 30 - 90) * _rad );
64 ay = endy + r2 * (0 - a) * Math.sin( ((j - 1) * 30 - 90) * _rad );
65 mc.curveTo( ax, ay, endx, endy );
66 }
67 mc.endFill( );
68 mc._x = x;
69 mc._y = y;
70 }
71
72 private function Ring() {
73 }
74 }