|
|
|||||
Регистрация: Jun 2010
Сообщений: 107
|
почему не работает lineStyle?
Друзья, может кто-нибудь объяснить мне с чего actionscript меняет толщину отрисовываемых линий? Привожу пример:
graphicWidth = getAllDays(startDateSeconds, nowDateSeconds)*(Graphic.oneDayWidthPixels/resolution); grayRect.graphics.lineStyle(1); grayRect.graphics.beginFill(0xc0c0c0, 1); grayRect.graphics.moveTo(0, 0); grayRect.graphics.lineTo(graphicWidth, 0); grayRect.graphics.lineTo(graphicWidth, calendarHeigth); grayRect.graphics.lineTo(0, calendarHeigth); grayRect.graphics.lineTo(0, 0); Если oneDayWidthPixels в классе Graphic равна 3 или меньше, то толщина линий grayRect'а получается нормальная - 1. А если больше 3 - то произвольная, выбранная, очевидно, по воле богов. Не понимаю, почему lineStyle(1) не работает если oneDayWidthPixels > 3. Может я что-то забыл импортнуть, чтобы lineStyle работал корректно? я импортнул У кого-нибудь вообще такое было? Как решили? ЗЫ. Да, и причем всегда меняется толщина только верхней и нижней линии, боковые остаются нормальными. Последний раз редактировалось Light; 21.07.2011 в 13:54. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ищите ошибку в другом месте. По этому обрывку ничего не понять. И конечно же здесь никакой роли не играет Graphic.oneDayWidthPixels, толщина линии задано хардом (1), а не переменной. Ищите скейл или изменение width хозяина графикса или его контейнеров, повторную отрисовку прямоугольника ( можно в начале отрисовки поставить grayRect.graphics.clear() ). И рассмотрите возможность вообще не пользоваться линейной обводкой, заменяя ее на заливку (два наслоенных прямоугольника).
__________________
Reality.getBounds(this); |
|
|||||
Читайте доку, особое внимание обратите на параметр scaleMode
|
|
|||||
Регистрация: Jun 2010
Сообщений: 107
|
КорДум, да этот прямоугольник не масштабируется, пока что просто отрисовывается единожды с тем параметрами, которые заданы в приведенном коде. Попробовал поставить lineStyle(0) - никаких изменений в поведении, что еще более странно. Если lineStyle(0), то почему линия видна?
GBee, да, я знаю про drawRect Просто когда увидел этот глюк, попробовал нарисовать прямоугольник по линиям - вдруг поможет? Не помогло. calendarHeigth = 30 graphicWidth высчитывается и зависит от многих параметров. При oneDayWidthPixels = 4, graphicWidth = 60704, при oneDayWidthPixels = 3, graphicWidth = 45528 Wolsh, grayRect.graphics.clear() не помог. Прямоугольник у меня не отрисовывается повторно, только единожды. Да и если бы отрисовывался, логично было бы предположить, что увеличение толщины верхней и нижней линии прямоугольника происходит из-за растяжения прямоугольника по высоте, но height-то у него всегда фиксированный - 30, в отличие от width и ни в каком месте кода он не растягивается... Загадка... Чувствую я, что вся загвоздка в том, что не работает lineStyle, а он не работает получается, раз на lineStyle(0) - ноль реакции. Почему может быть такое что задавая lineStyle(0) все равно рисуется видимая обводка? |
|
|||||
Вы рисуете векторную шутку, она масштабируется в зависимости от настроек лайнстайла, их там много, проверьте scaleMode линиям какой вы задаёте. lineStyle(0) - особый случай, это однопиксельная линия которая при масштабировании остаётся однопиксельной.
|
|
|||||
Регистрация: Jun 2010
Сообщений: 107
|
Aquahawk, не помогло, сделал так:
grayRect.graphics.lineStyle(0, 0x000000, 1.0, true, LineScaleMode.NONE); grayRect.graphics.beginFill(0xc0c0c0, 1); grayRect.graphics.moveTo(0, 0); grayRect.graphics.lineTo(graphicWidth, 0); grayRect.graphics.lineTo(graphicWidth, calendarHeigth); grayRect.graphics.lineTo(0, calendarHeigth); grayRect.graphics.lineTo(0, 0); |
|
|||||
Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
|
в коде выше указано: grayRect.graphics.lineStyle(0, 0x000000, 1.0, true, LineScaleMode.NONE); - размер линии = 0.
в итоге: может Вы не видите ее (линию) ? (сливается с фоном, в альфе спрятана). в дополнение: если меняется контейнер(размеры), где рисуется, то изменяется вся картинка в контейнере, отсюда вопрос, возможно у Вас меняется размер контейнера и от этого и линия рисуется другая? Последний раз редактировалось t4arty; 21.07.2011 в 14:39. |
|
|||||
Не пойму что не работает:
http://*************/s/14hoW - lineStyle 5. http://*************/s/14hpw - 3. http://*************/s/14hpK - 1. Все меняет как надо (вне зависимости от width, height). Код взят ваш.
__________________
Кодинг, багинг, алгоритминг. me @ |
Часовой пояс GMT +4, время: 02:44. |
|
« Предыдущая тема | Следующая тема » |
|
|