![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
всем привет, помогите решить проблему.
объект отрисовывается по линиям через DrawPath , заливается битмапом, но при добавлении нескольких линий в центр объекта, заливка становится корявой, появляется белой пятно, нужно чтобы все заливалось равномерно, вне зависимости от того какие внутри еще рисуются линии или фигуры. Все линии рисуются по одному пути рисования (тоесть по 1-му вектору комманд и координат). |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
endFill()
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
энд филл есть
тут проблема в том что все отрисовано одним набором комманд, и внешняя фигура и внутренняя, я вот и думаю есть ли какие стандартные методы чтобы такого эффекта избежать |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
а другие есть способы?
просто я нарисовал простую фигуру, а у меня они бывают очень сложные где много moveTo методов, и определить перед каким нужно закончить заливку проблематично.. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Очевидно, перед каждым moveTo.
Плеер тоже не может интуитивно догадаться, что Вы хотите получить в итоге. При пересечении контуров действует winding. Да, чаще мешает чем помогает, но без него было бы невозможно делать "дырки" внутри замкнутых контуров. Каждый moveTo по сути начинает новый контур. Надо закрыть предыдущий, чтобы не было виндинга. GraphicsEndFill такая же команда GraphicsData, как и все другие. А после нее еще надо заново объявлять заливку/обводку))
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 30.08.2012 в 12:02. |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
тоесть вариантов чтобы красиво залить больше нет, кроме как парсить массивы которые были изначала предназначены для отрисовки drawPath-ом, и делать конструкцию типа
graphics.graphics.beginBitmapFill(fillBitmapData); graphics.moveTo(0,0); graphics.lineTo(0,100); graphics.lineTo(100,100); graphics.lineTo(100,0); graphics.endFill(); graphics.beginFill(fillBitmapData); graphics.moveTo(0x346333); graphics.lineTo(0,100); graphics.lineTo(100,100); graphics.lineTo(100,0); graphics.endFill(); но при этом все равно рисунок битмапы сместиться, вообще я думал что для drawPath есть какие нить стандартные методы чтобы нормально заливать по двум векторам без заморочек. |
|
|||||
|
Что вы подразумеваете под "красиво"? Это нормальное поведение при заливке незамкнутых контуров (в большинстве векторных редакторов, реализация примерно такая же).
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
ну чтобы битмапа залила равномерно спрайт (без сдвигов рисунков и тп) вне зависимости от того сколько я еще дополнительно линий там не нарисовал
вектор комманд для отрисовки drawPath такой vecCommand = [1,2,2,2,2,1,2,2,2]; и мне кажется правильней чтобы заливка вела себя как правый вариант, нежели левый, а из-за такого поведения , приходится разбивать эти комманды (1,2,2,2,2,1,2,2,2) на moveTo , lineTo , внутри вставляя когда начинать заливку когда заканчивать, вместо того чтобы просто писать spr.graphics.beginBitmapFill(fillBitmapData); spr.graphics.drawPath(vecCommand,vecCoords); spr.graphics.endFill(); |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|