|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Как правильно применить заливку, чтобы было залито нутро нарисованной стрелки?
Здравствуйте.
Я нарисовал с помощью graphics стрелку, потом попробовал применить заливку, но получилось так, что заливка вышла за пределы стрелки и пошла в неопределённую (для меня) сторону. const DISTANCE:Number = getDistance(); const GRAPHICS:Graphics = arrow.graphics; GRAPHICS.clear(); //Удаление предыдущий рисунков: GRAPHICS.lineStyle(0,0xffffff,1,false,LineScaleMode.NORMAL,CapsStyle.ROUND,JointStyle.MITER); //Установка стиля линий: GRAPHICS.beginFill(0xFFFFFF); const STARTARROWX:Number = BEGINCIRCLEX; //Начальная координата по оси x у стрелки: const STARTARROWY:Number = BEGINCIRCLEY+DISTANCE; //Начальная координата по оси y у стрелки: const ENDARROWX:Number = endCircleX; //Конечная координата по оси x у стрелки: const ENDARROWY:Number = endCircleY; //Конечная координата по оси y у стрелки: const LENGTHARROW:Number = 30; //Длина стрелки: const WIDTHTARROW:Number = DISTANCE/6; //Ширина стрелки: const WIDTHJOININGLINE:Number = DISTANCE/6; //Ширина соединяющийся линии: const CORRECTIONWIDTHJOININGLINE:Number = DISTANCE/4; //Нижняя верхняя линия: GRAPHICS.moveTo(STARTARROWX,STARTARROWY); GRAPHICS.curveTo(BEGINCIRCLEX-DISTANCE*2,STARTARROWY-DISTANCE,BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE+WIDTHJOININGLINE); //Соединение верхней и нижней линии в самом начале: GRAPHICS.moveTo(STARTARROWX,STARTARROWY); GRAPHICS.lineTo(STARTARROWX,STARTARROWY+WIDTHTARROW); //Большая верхняя линия: GRAPHICS.moveTo(STARTARROWX,STARTARROWY+WIDTHTARROW); GRAPHICS.curveTo(BEGINCIRCLEX-DISTANCE*2-WIDTHTARROW,STARTARROWY-DISTANCE,BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE-WIDTHJOININGLINE); //Верхнее соединение большой верхней линии с закрывающейся верхней линией: GRAPHICS.moveTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE-WIDTHJOININGLINE); GRAPHICS.lineTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE-CORRECTIONWIDTHJOININGLINE); //Верхняя закрывающаяся линия: GRAPHICS.moveTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE-CORRECTIONWIDTHJOININGLINE); GRAPHICS.lineTo(STARTARROWX,STARTARROWY-DISTANCE*2-WIDTHTARROW/2); //Нижняя закрывающаяся линия: GRAPHICS.moveTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE+CORRECTIONWIDTHJOININGLINE); GRAPHICS.lineTo(STARTARROWX,STARTARROWY-DISTANCE*2-WIDTHTARROW/2); //Нижнее соединение большой нижней линии с закрывающейся нижней линией: GRAPHICS.moveTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE+WIDTHJOININGLINE); GRAPHICS.lineTo(BEGINCIRCLEX-DISTANCE/2,BEGINCIRCLEY-DISTANCE+CORRECTIONWIDTHJOININGLINE); GRAPHICS.endFill(); |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Узлы должны ставиться последовательно, это называется "замкнутый контур". Как будто Вы рисуете, не отрывая карандаш от бумаги, и возвращаетесь в начальную точку.
Команда moveTo должна применяться для перемещения к точке начала рисования контура, а не каждой линии. Команда moveTo разрывает контур, ведь она и означает "не рисовать".
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Спасибо.
|
Часовой пояс GMT +4, время: 19:59. |
|
« Предыдущая тема | Следующая тема » |
|
|