Вопрос

Я пытаюсь построить круг, используя линии. Каждая строка начинается в центре круга и составляет до тех пор, пока радиус круга. Использование цикла наряду с синусоидами и CoSign Waves, я могу построить круг, используя синус и CoSign, чтобы отметить координаты lineTo параметр.

Моя проблема с параметром толщины линии 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, является действительной толщиной.

Это было полезно?

Решение

Я бы предложил рисовать их в виде клиньев вместо линий, скопировать и вставить это в новый FLA, чтобы увидеть, что я имею в виду:

var nRadians : Number;

var nradius: номер = 100;

var nx: номер;

VAR NY: номер;

var prevedx: номер = nradius;

VAR предыдущий: номер = 0;

// Это то, что имеет смысл для меня, но он все еще создает некоторые пробелы

var linethickness: число = 1 + ((((nradius * 2) * math.pi) - 360) / 359;

для (var i: int = 0; i <360; i ++) {

// преобразую степень к радианам. 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.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;

}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top