Компонент подклассов скрывает визуальные элементы базового класса.Как я могу повлиять на визуальное наследование? - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть следующая проблема:

  • У меня есть класс A, который расширяет s: Panel.
  • У меня есть класс B, который расширяет A

    <!-- Class A -->
    <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" >
    
       <s:Label text="A" />
    </s:Panel>
    
    <!-- Class B -->
    <controls:A  >
       <s:Label text="B" alpha="0.3" />
    </controls:A>
    

моя интуиция говорит мне, что оба текста должны быть показаны, но я не могу сделать текст в шоу А.

спасибо,

1 Ответ

0 голосов
/ 05 апреля 2011

Вы не можете добавить детей дважды в UIComponent. Таким образом, класс A расширяет Panel и добавляет метку к дочернему массиву внутри экземпляра Panel. И Б расширяет А, но вы не можете добавить больше детей снова. Это всего лишь ограничение MXML. Теоретически вы могли бы сделать это, но Flex сделает исключение, когда вы сделаете это.

Однако есть способы обойти это. Вы должны спланировать расширение этого типа во Flex при разработке базового класса. Это относится к компоненту шаблона. Базовый класс будет служить шаблоном, который позволит подклассам указывать части пользовательского интерфейса, а базовый класс обернет эти компоненты. В целом я считаю эту технику очень важной для создания многоразовых представлений, которые могут настраиваться другими пользователями.

Прочтите эту статью о том, как вы можете это сделать: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf68a49-7ffa.html

Вы даже можете добавить тег метаданных метаданных [DefaultProperty] в базовый класс, чтобы у ваших пользователей была иллюзия, что они добавляют в массив дочерних элементов, как это делает стандарт MXML.

http://dispatchevent.org/mims/flex-manual-blues/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...