2010-05-19 2 views
0

선을 사용하여 원을 만들려고합니다. 각 선은 원의 중심에서 시작하여 원의 반경만큼 길다. 사인 및 코사인 파와 함께 루프를 사용하여 sin 및 cosign을 사용하여 lineTo 매개 변수의 좌표를 표시하는 원을 만들 수 있습니다.ActionScript lineStyle 원을 채우기위한 두께

내 문제는 라인 두께 매개 변수 lineStyle입니다. 원의 둘레가 아무리 크다하더라도 선의 끝이 완벽하게 일치하기를 바랍니다. 그러나 선 두께에 대한 적절한 방법을 알아 내지 못합니다.

//this is what makes sense to me, but it still creates some gaps 
lineThickness = 1 + (((nRadius * 2) * Math.PI) - 360)/359; 

for(var i:int = 0; i < 360; i++) 
{ 
    // Convert the degree to radians. 
    nRadians = i * (Math.PI/180); 

    // Calculate the coordinate in which the line should be drawn to. 
    nX = nRadius * Math.cos(nRadians); 
    nY = nRadius * Math.sin(nRadians); 

    // Create and drawn the line. 
    graphics.lineStyle(lineThickness, 0, 1, false, LineScaleMode.NORMAL, CapsStyle.NONE); 
    graphics.moveTo(0, 0); 
    graphics.lineTo(nX, nY); 
} 

는 라인의 끝은, 원의 둘레에서 만날 틈없이, 내가 남아있어 공간을 채우기 위해 라인을 확대 할 필요가 확인하십시오. 나에게 의미가 있지만 효과가없는 것은 360을 원주에서 뺀 다음 그 수를 줄 사이의 빈 슬롯 수 (359)로 나누고 그 수에 1의 두께를 더하는 것입니다.

내게있어서 lineStyle 두께 매개 변수는 Number이지만 0과 255 사이의 값만있는 것으로 보이므로 1.354와 같은 부동 소수점 숫자가 유효한 두께인지 확실하지 않습니다.

+0

은 내가 당신이 달성하려고하는 것을 이해 생각하지만, 난 정말 이해가 안 돼요? (나는 단지 호기심입니다) – grapefrukt

+0

그래서 각 줄의 색상 값에 액세스 할 수 있습니다. – TheDarkIn1978

답변

1

내가 대신 라인의 웨지로 그리기 제안 복사 무슨 뜻인지 볼 수있는 새로운 FLA에이 붙여 넣을 것 :

var에 nRadians을 : 번호;

var nRadius : Number = 100;

var nX : Number;

var nY : Number;

var previousX : Number = nRadius;

var previousY : Number = 0;

//이 나에게 의미를 만드는 것입니다,하지만 여전히 약간의 차이를 만들어

var에 lineThickness : 수 = ​​1 + (((nRadius * 2) * Math.PI로) - 360)/359; 위한

(VAR I : INT = 0; I < 360; 나는 ++) {

// 라디안 정도를 변환. nRadians = i * (수학 .PI/180); * 왜 *

// Calculate the coordinate in which the line should be drawn to. 
nX = nRadius * Math.cos(nRadians); 
nY = nRadius * Math.sin(nRadians); 

// Create and drawn the line. 
graphics.beginFill(Math.random() * 0xFFFFFF); 
graphics.moveTo(0, 0); 
graphics.lineTo(previousX, previousY); 
graphics.lineTo(nX, nY); 
graphics.lineTo(0, 0); 
graphics.endFill(); 
previousX = nX; 
previousY = nY; 

}