网上有很多使用AS3画一个扇形的方法,但是却一个都没有解释这个函数是如何运作来画出扇形的,下面浅谈下我对这个函数的理解。
首先上代码,代码来自http://blog.csdn.net/weiming8517/article/details/12023411。
private function drawSector(mc:Sprite, x:Number = 200, y:Number = 200, r:Number = 100, angle:Number = 60, startFrom:Number = 0, color:uint = 0x000000):void { mc.graphics.clear(); mc.graphics.beginFill(color,50); mc.graphics.lineStyle(0,color); mc.graphics.moveTo(x,y); angle=(Math.abs(angle)>360)?360:angle; var n:Number=Math.ceil(Math.abs(angle)/45); var angleA:Number=angle/n; angleA=angleA*Math.PI/180; startFrom=startFrom*Math.PI/180; mc.graphics.lineTo(x+r*Math.cos(startFrom),y+r*Math.sin(startFrom)); for(var i:int = 1;i <= n;i++) { startFrom+=angleA; var angleMid:Number = startFrom-angleA/2; var bx:Number=x+r/Math.cos(angleA/2)*Math.cos(angleMid); var by:Number=y+r/Math.cos(angleA/2)*Math.sin(angleMid); var cx:Number=x+r*Math.cos(startFrom); var cy:Number=y+r*Math.sin(startFrom); mc.graphics.curveTo(bx,by,cx,cy); } if(angle!=360) { mc.graphics.lineTo(x,y); } mc.graphics.endFill(); }