Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Accordion и ViewStack, инициализация всех детей (http://www.flasher.ru/forum/showthread.php?t=91821)

miramax 09.02.2007 07:25

Accordion и ViewStack, инициализация всех детей
 
Как инициализировать все чилды компонентов ViewStack, TabNavigator, Accrodion.
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="main();">
  <mx:Script>
        <![CDATA[
                   
            public function main():void
            {
                trace(this.button1);  // ok
                trace(this.button2);  // null
                trace(this.button3);  // null
            }
      ]]>
    </mx:Script>
        <mx:Accordion x="185" y="10" width="200" height="150" >
                <mx:Canvas  width="100%" height="100%" >
                        <mx:Button id='button1'/>
                </mx:Canvas>
                <mx:Canvas  width="100%" height="100%" >
                        <mx:Button id='button2'/>
                </mx:Canvas>
                <mx:Canvas  width="100%" height="100%" >
                        <mx:Button id='button3'/>
                </mx:Canvas>
        </mx:Accordion>
</mx:Application>

Получается что элементы button2 и button3 - не инициализированы. Их можно инициализировать последовательно открыв все чилды, но это очень не удобно.

Azy 09.02.2007 09:06

По идее никак. Думаю народ в Адобе грамотный, и при большом количестве элементов запуск приложения затянулся бы из-за инициализации. И имхо все контролы нужно инициализировать, только когда их нужно задействовать, т.е при открытии вкладки аккордеона, допустим. Не могу представить ситуацию, когда нужно инициализировать все.

miramax 09.02.2007 09:17

Цитата:

Сообщение от Azy
Не могу представить ситуацию, когда нужно инициализировать все.

Элементарно:
К примеру, контролы из одного чилда влияют на контролы из другого чилда.
Или, в моём случае, я получаю данные с сервера и модифицирую контролы. Баиндинга мне не достаточно, я ещё использую много специфических событий и переменных.

Azy 09.02.2007 10:12

Хм. Думаю все-таки придется отлавливать ивент открытия чилда и модифицировать их в нем. А влияния заносить в стек, либо еще куда-то.

miramax 09.02.2007 10:23

Цитата:

Сообщение от Azy
Хм. Думаю все-таки придется отлавливать ивент открытия чилда и модифицировать их в нем. А влияния заносить в стек, либо еще куда-то.

Да, вот подобными извращениями приходится заниматься. Но должно же быть более простое решение.

Azy 09.02.2007 10:39

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

Nirth 09.02.2007 13:51

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

__i 09.02.2007 14:06

гы гы ребята, читайте ВНИМАТЕЛЬНО хелп, а еще полезно раскрывать в хелпе все наследованные(inherited) свойства/методы и прочую байду...

Шаманское заклинание в вашем случае выглядит так
Код:

<mx:Accordion creationPolicy="all">
.......
<mx:ViewStack creationPolicy="all">
.......
и так далее....


Nirth 09.02.2007 14:59

Сразу видно, человек присытился флексом уже =)

__i 09.02.2007 15:17

Nirth, не то слово, охото уже како-то интересно-полезной работы, а блин не лечить компоненты с помощью серпа и молота.


Часовой пояс GMT +4, время: 07:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.