效果:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class TestDraw extends Sprite
{
public function TestDraw()
{
var stag:Sprite=new Sprite();
addChild(stag);
var moviec:MovieClip=new MovieClip;
stag.addChild(moviec);
var S_angle:int=1;
this.addEventListener(Event.ENTER_FRAME, function(event:Event):void
{
if (S_angle == 361)
{
return;
}
draw(moviec, 200, 200, 100, S_angle, 270, 0xffcc00);
S_angle++;
});
}
//
private function draw(mc:MovieClip, x:Number=200, y:Number=200, r:Number=100, angle:Number=27, startFrom:Number=270, color:Number=0xff0000):void
{
mc.graphics.beginFill(0xffffff);
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=1; i <= n; i++)
{
startFrom+=angleA;
var angleMid=startFrom - angleA / 2;
var bx=x + r / Math.cos(angleA / 2) * Math.cos(angleMid);
var by=y + r / Math.cos(angleA / 2) * Math.sin(angleMid);
var cx=x + r * Math.cos(startFrom);
var cy=y + r * Math.sin(startFrom);
mc.graphics.curveTo(bx, by, cx, cy);
}
if (angle != 360)
{
mc.graphics.lineTo(x, y);
}
mc.graphics.endFill();
}
}
}
源码:http://www.66ncdgw.com/upload/TestDraw.rar