![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 19
|
Есть сложность создания скина для закладок.
На картинки показана проблема: ![]() Подскажите способ реализации подобного. Пока на ум пришло только перекрывать метод рисования верхнего бордера у NavigatorContent... Может есть более простые способы? Последний раз редактировалось im4LF; 09.09.2010 в 12:26. |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 100
|
На самом деле это не так просто сделать, точнее, объяснить не получится.
У вас шаблон в векторе ? Можете скинуть свой шаблон, я попытаюсь сделать, это как вариант. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 19
|
Bond007, доброго времни суток.
К сожалению у меня растр. Скин для табов рисовал с помощью <s:Rect ... radiusX="6"> Может что-то скинуть другое? Проблема стоит довольно остро. Спасибо. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 19
|
Код:
<mx:ViewStack id="myViewStack" width="100%" bottom="0" top="25"> <s:NavigatorContent id="search" label="Search" skinClass="TabSkin" visible="false"> <s:Label text="Search Screen"/> </s:NavigatorContent> <s:NavigatorContent id="custInfo" label="Customer Info" skinClass="TabSkin"> <s:Label text="Customer Info"/> </s:NavigatorContent> </mx:ViewStack> <s:TabBar dataProvider="{myViewStack}" skinClass="skins.TestTabBarSkin" styleName="title-level2" height="24" left="0" />
![]() |
|
|||||
|
Похоже я вас неправильно понял в первый раз. Если вам нужно сделать так что бы бордюр не был виден, то вариантов всего три.
1. Отказаться от прозрачности, т.е. сделать псевдопрозрачность (фон ставится в скин элементов управления). 2. Отказаться от бордюра, или переписать метод рисования бордюра у контейнера. 3. Имитировать бордюр фильтрами (затратно для процессора, контур вокруг всего элемента управления) Добавлено через 4 минуты P.S. Есть еще один вариант, рисовать бордюр отдельно, опираясь на координаты и положения контейнера и табов (под табом я понимаю TabButton) |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 19
|
alatar, фон к сожалению делать в скине нельзя, пока сделан градиент от черного к прозрачному который закрывает артефакт - но смотрится конечно плохо.
fljot, в доке написано что "This process requires that the blendMode property of the parent display object be set to flash.display.BlendMode.LAYER" (BlendMode.ERASE) - но viewstack не является parent'ом для TabBar. Попробовал в скине Tab: а для TabBarButton: Но эффекта нет (как и ожидалось) - у выделенной кнопки просто пропадает Rect, а бордер у таба не исчезает... Может что-то надо в коде перестроить? Или сделать обернуть ViewStack и TabBar в контейнер с тем самым бордером и кнопке делать erase уже... Попробую... Добавлено через 2 часа 2 минуты Помог совет fljot, добавить только обший контейнер надо для бордера: Код:
<s:Rect left="0" right="0" top="25" bottom="0" radiusX="6" topLeftRadiusX="0"> <s:stroke> <s:SolidColorStroke color="#ffffff" alpha="0.3" /> </s:stroke> </s:Rect> <!-- черная плашка затирающия под собой все --> <s:Rect blendMode="erase" top="0" left="0" right="0" bottom="-2" topLeftRadiusX="6" topRightRadiusX="6" includeIn="selectedStates, overStates"> <s:fill> <s:SolidColor color="#000000" /> </s:fill> </s:Rect> И есть еще одна небольшая проблема - у выделенной кнопки должен быть бордер - но только на left, top, right сторонах. Подскажите как задать s:stroke только на нужных сторонах, или исключить его на bottom? Последний раз редактировалось im4LF; 10.09.2010 в 08:15. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 19
|
А какому элементу blendMode="erase" и как определять его ширину?
Небольшой пример, если можно? |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|