Тема: TabBar skin
Показать сообщение отдельно
Старый 10.09.2010, 08:09
im4LF вне форума Посмотреть профиль Отправить личное сообщение для im4LF Найти все сообщения от im4LF
  № 8  
Ответить с цитированием
im4LF

Регистрация: 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:
Код AS3:
<s:Rect blendMode="layer" ...
а для TabBarButton:
Код AS3:
<!-- selected -->
    <s:Rect blendMode="erase" ...
Но эффекта нет (как и ожидалось) - у выделенной кнопки просто пропадает Rect, а бордер у таба не исчезает...

Может что-то надо в коде перестроить?
Или сделать обернуть ViewStack и TabBar в контейнер с тем самым бордером и кнопке делать erase уже... Попробую...

Добавлено через 2 часа 2 минуты
Помог совет fljot, добавить только обший контейнер надо для бордера:
Код:
Код AS3:
<s:SkinnableContainer blendMode="layer" ... skinClass="skins.TabBorder">
	<mx:ViewStack ...>...</mx:ViewStack>
	<s:TabBar ... />
</s:SkinnableContainer>
skins.TabBorder:
Код AS3:
<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>
skins.TabBarButtunSkin:
Код AS3:
<!-- черная плашка затирающия под собой все -->
<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.