[ActionScript 3.0] 绘制扇形方法

 1 /**
 2          * 绘制扇形
 3          * @param    mc 承载扇形的对象
 4          * @param    x 圆心角x
 5          * @param    y 圆心角y
 6          * @param    r 半径
 7          * @param    angle 绘制角度
 8          * @param    startAngle 起始角度
 9          * @param    color 填充颜色
10          * @param    hasFrame 是否填充边框
11          */
12         private function drawSector(sp:Sprite,x:Number=0,y:Number=0,r:Number=100,angle:Number=60,startAngle:Number=0,color:Number=0xff0000,hasFrame:Boolean=true):void {
13             sp.graphics.clear();
14             if(hasFrame) {
15                 sp.graphics.lineStyle(0,0xffff00);
16             }
17             sp.graphics.beginFill(color,1);
18             sp.graphics.moveTo(x,y);
19             angle=(Math.abs(angle)>360)?360:angle;
20             var n:Number=Math.ceil(Math.abs(angle)/45);
21             var angleA:Number=angle/n;
22             angleA=angleA*Math.PI/180;
23             startAngle=startAngle*Math.PI/180;
24             sp.graphics.lineTo(x+r*Math.cos(startAngle),y+r*Math.sin(startAngle));
25             for (var i:int=1; i<=n; i++) {
26                 startAngle+=angleA;
27                 var angleMid:Number=startAngle-angleA/2;
28                 var bx:Number=x+r/Math.cos(angleA/2)*Math.cos(angleMid);
29                 var by:Number=y+r/Math.cos(angleA/2)*Math.sin(angleMid);
30                 var cx:Number=x+r*Math.cos(startAngle);
31                 var cy:Number=y+r*Math.sin(startAngle);
32                 sp.graphics.curveTo(bx,by,cx,cy);
33             }
34             if (angle!=360) {
35                 sp.graphics.lineTo(x,y);
36             }
37             sp.graphics.endFill();
38         }

 

posted on 2015-07-13 13:05  晏过留痕  阅读(589)  评论(0编辑  收藏  举报