У меня проблемы с рисованием круга. Кажется, код работает для рисования всех необходимых сегментов, кроме одного, но трассировка точек чертежа выглядит правильно.
Это класс, который генерирует сегменты:
package views
{
import flash.display.Sprite;
import flash.geom.Point;
import views.segments.AS_Segment;
public class AS_ColorContainer extends Sprite
{
private var currX :int;
private var currY :int;
private var diameter :int;
private var angle :int;
private var segments:Vector.<AS_Segment>;
public function AS_ColorContainer()
{
init();
}
private function init():void
{
diameter = 400;
angle = 0;
currX = 0;
currY = 0 - radius;
segments = new Vector.<AS_Segment>(24);
for(var i:int = 0; i < 6; i++) {
drawSegment("greenLarge",0x00FF00,30);
drawSegment("red",0xFF0000,10);
drawSegment("greenSmall",0x00FF00,10);
drawSegment("blue",0x0000FF,10);
}
}
private function drawSegment($name:String,$color:uint,$size:int):void
{
var seg:AS_Segment = new AS_Segment($name);
seg.graphics.beginFill($color);
seg.graphics.moveTo(0,0);
seg.graphics.lineTo(currX,currY);
trace("Old: "+currX+":"+currY);
angle += $size;
currX = radius * Math.cos(degToRad(angle));
currY = radius * Math.sin(degToRad(angle));
trace("New: "+currX+":"+currY);
seg.graphics.lineTo(currX,currY);
seg.graphics.lineTo(0,0);
seg.graphics.endFill();
addChild(seg);
segments.push(seg);
}
private function degToRad($deg:Number):Number
{
return $deg * (Math.PI / 180);
}
private function get radius():Number
{
return diameter / 2;
}
}
}
Класс AS_Segment - это простое расширение формы, которое просто хранит идентификатор:
package views.segments
{
import flash.display.Shape;
public class AS_Segment extends Shape
{
public var id :String;
public function AS_Segment($id:String)
{
id = $id;
}
}
}
Вывод не соответствует ожидаемому:
Но следы выглядят правильно:
Old: 0:-200
New: 173:99
Old: 173:99
New: 153:128
Old: 153:128
New: 128:153
Old: 128:153
New: 100:173
Old: 100:173
New: 0:200
Old: 0:200
New: -34:196
Old: -34:196
New: -68:187
Old: -68:187
New: -99:173
Old: -99:173
New: -173:99
Old: -173:99
New: -187:68
Old: -187:68
New: -196:34
Old: -196:34
New: -200:0
Old: -200:0
New: -173:-100
Old: -173:-100
New: -153:-128
Old: -153:-128
New: -128:-153
Old: -128:-153
New: -100:-173
Old: -100:-173
New: 0:-200
Old: 0:-200
New: 34:-196
Old: 34:-196
New: 68:-187
Old: 68:-187
New: 100:-173
Old: 100:-173
New: 173:-100
Old: 173:-100
New: 187:-68
Old: 187:-68
New: 196:-34
Old: 196:-34
New: 200:0