[ActionScript 3.0] 绘制扇形方法

 1 /**

 2          * 绘制扇形

 3          * @param    mc 承载扇形的对象

 4          * @param    x 圆心角x

 5          * @param    y 圆心角y

 6          * @param    r 半径

 7          * @param    angle 绘制角度

 8          * @param    startFrom 起始角度

 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         }

 

你可能感兴趣的:(actionscript)