![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2010
Сообщений: 4
|
Доброго времени суток.
Возникла задача сделать некую панель, на которой бы располагались элементы управления (кнопки, комбобоксы и т.д.). Панель не выполняет никаких функций кроме визуального оформления (закругленные края + фон). Вопрос собственно в чем. Этот компонент предполагается использовать так: Но сам компонент унаследован от SkinnableContainer, внутри которого есть в который должны вставляться кнопки из MXML-кода выше. Сам вопрос в следующем: Какой метод вызывается у моего компонента при выполненнии такого кода: ? опытным путем выяснил что это не addElement и не addChild. Что это за метод? |
|
|||||
|
В spark контейнерах вместо addChild используются методы addElement, removeElementAt и т.д. Все методы типа addChild переписаны и при вызове генерируют ошибку.
Цитата:
Добавлено через 50 минут Соотвестственно у SkinnableContainer вызывается mxmlContentFactory По-сути достаточно знать, что в конце-концов все эти Button попадут в _mxmlContent собранными внутри Array, а после того как инстанцируется contentGroup будут добавлены в нее. Последний раз редактировалось alatar; 30.08.2010 в 16:03. |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 4
|
Спасибо, то что нужно
Все хорошо, но в конструкциях вида свойство указанное в теге [DefaultProperty("property")] не вызывается, и следовательно, кнопка ххх2 не появляется. Вероятно в стэйтах реализован какой-то другой механизм... Последний раз редактировалось britall; 01.09.2010 в 14:09. |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Aug 2010
Сообщений: 4
|
Цитата:
Реализация компонента: <?xml version="1.0" encoding="utf-8"?> <s:SkinnableContainer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" skinClass="components.engine.skins.BarSkin" > <s:layout> <s:HorizontalLayout/> </s:layout> </s:SkinnableContainer> <?xml version="1.0" encoding="utf-8"?> <s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" > <fx:Metadata> [HostComponent("spark.components.SkinnableContainer")] </fx:Metadata> <s:states> <s:State name="enabled" /> <s:State name="disabled" /> <s:State name="normal" /> </s:states> <s:Rect x="0" y="0" radiusX="8" radiusY="8" height="100%" width="100%"> <s:stroke> <s:LinearGradientStroke weight="1" scaleMode="normal"> <s:GradientEntry color="0xCCCCCC"/> </s:LinearGradientStroke> </s:stroke> <s:fill> <s:LinearGradient> <s:entries> <s:GradientEntry color="0xEEEEEE"/> </s:entries> </s:LinearGradient> </s:fill> </s:Rect> </s:SparkSkin > <engine:Bar width="100%" height="32"> <s:Button label="b1"/> <s:Button label="b2"/> </engine:Bar> В результате скин появляется поверх кнопок. т.е. вижу просто серую область с закругленными краями, но кнопок в ней нет Последний раз редактировалось britall; 01.09.2010 в 15:16. |
|
|||||
|
в скин (в конец) добавьте:
<s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" minWidth="0" minHeight="0"> <s:layout> <s:BasicLayout/> </s:layout> </s:Group> Скин класс можно прописать в css. |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 4
|
Помогло. Спасибо еще раз.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|