Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Некорректная работа state (http://www.flasher.ru/forum/showthread.php?t=175123)

zigfridus 10.02.2012 12:53

Некорректная работа state
 
Добрый день.
2-й день вожусь с mxml и не могу найти ошибку.
Есть большой mxml. Привожу его частично, если будет нужно, то покажу остальное.
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009"
                                        xmlns:s="library://ns.adobe.com/flex/spark"
                                        xmlns:mx="library://ns.adobe.com/flex/mx"               
                                        xmlns:cookbook="cookbook.*"                                       
                                        minWidth="1200" minHeight="850" >
 
<s:states>
        <s:State name="admins"/>
        <s:State name="guests"/>
</s:states>
 
<s:VGroup id="rightGroup" horizontalAlign="left" verticalAlign="middle">
        <mx:Accordion id="accordion" width="340" height="490">
                <s:NavigatorContent width="100%" height="100%" label="Фильтр" includeIn="admins">
                .............
                .............
                .............
                </s:NavigatorContent>
 
                <s:NavigatorContent width="100%" height="100%" label="Контент 1">
                .............
                .............
                .............                                                       
                </s:NavigatorContent>
 
                <s:NavigatorContent width="100%" height="100%" label="Контент 2">
                .............
                .............
                .............
                </s:NavigatorContent>
 
                <s:NavigatorContent width="100%" height="100%" label="Контент 3">
                .............
                .............
                .............
                </s:NavigatorContent>                                       
        </mx:Accordion>
</s:VGroup>
</s:NavigatorContent>

Проблема заключается в том, что компонент NavigatorContent под названием "Фильтр" не отображается ни в одном состоянии, включая состояние "admins". Экспериментировал - подставлял includeIn="admins" в различные компоненты (к примеру в Accordion или VGroup), в них состояние работает корректно. Но, если подставлять в любой компонент NavigatorContent, то он не отображается ни в одном состоянии.

Может кто-то с чем-то подобным сталкивался? Подскажите, как проблему решить?

wvxvw 10.02.2012 14:31

http://bugs.adobe.com/jira/browse/SDK-28020 - говорят, что пофиксили, я не проверял. В любом случае не стал бы пользоваться стейтами, да и MXML бы не использовал :)

zigfridus 10.02.2012 15:38

Похоже указанный баг пофиксили. Запустил у себя вложенный в описание бага mxml и он отработал без ошибок.
Моя проблема похожа на эту. В моем случае содержимое NavigatorContent находится на вкладке, которая по-умолчанию при запуске приложения скрыта. При этом абсолютно аналогичное содержимое на вкладке, открываемой по-умолчанию со стейтами работает корректно. Пробовал присвоить каждому NavigatorContent свой id - это в описание бага указано, как временное решение, но не помогло.

Цитата:

Сообщение от wvxvw (Сообщение 1062022)
http://bugs.adobe.com/jira/browse/SDK-28020 - говорят, что пофиксили, я не проверял. В любом случае не стал бы пользоваться стейтами, да и MXML бы не использовал :)

А как же во Flex без стейтов? Я при их помощи разграничиваю доступ к приложению...

Добавлено через 4 часа 42 минуты
Люди, подскажите, что нужно сделать, чтобы состояния корректно заработали?
Программу уже сдавать надо и только с этими состояниями затык вышел :(

wvxvw 11.02.2012 20:59

Ну, что сделать... переопределить set currentState и самому реализовать чего там показывать или скрывать.
А по поводу стейтов - ну так во флексе они реализованы через многоточие... Смысл стейта заключается в том, чтобы отделить часть кода, которая выполняется в определенной ситуации от части кода, которая выполняется в другой - чтобы они вообще не пересекались, и чтобы не писать кучу ифов. Флекс, естесственно, все делает наоборот - создает невнятную кашу, в которой потом уже не разобраться. Вот только если бы это была единственная вещь сделаная во флексе через многоточие...

zigfridus 13.02.2012 13:01

Цитата:

Сообщение от wvxvw (Сообщение 1062215)
Ну, что сделать... переопределить set currentState и самому реализовать чего там показывать или скрывать.
А по поводу стейтов - ну так во флексе они реализованы через многоточие... Смысл стейта заключается в том, чтобы отделить часть кода, которая выполняется в определенной ситуации от части кода, которая выполняется в другой - чтобы они вообще не пересекались, и чтобы не писать кучу ифов. Флекс, естесственно, все делает наоборот - создает невнятную кашу, в которой потом уже не разобраться. Вот только если бы это была единственная вещь сделаная во флексе через многоточие...

Извиняюсь возможно за дурацкий вопрос (это моя 1-я программа на Флексе), но где именно переопределяется set currentState?

Добавлено через 2 часа 0 минут
Разобрался...это я дурак :wacko: :(

Вместо того, чтобы использовать в <mx:TabNavigator> в качестве закладок <mx:VBox>, я использовал <s:NavigatorContent>. Поменял везде на <mx:VBox> и состояния заработали корректно.

Спасибо за помощь :)


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

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