Состояние приложения Flex4 в пользовательском компоненте - PullRequest
0 голосов
/ 17 июня 2010

Я портирую свое приложение Flex3 на Flex4 (FlashBuilder4).Я получаю совершенно новую концепцию государства, кроме одной вещи.В пользовательском компоненте (отдельный файл mxml) я использую основной уровень приложения.Во Flex3 это было:

<mx:State name="only_view_mode">
    <mx:RemoveChild target="{myComponent.button1}" />
</mx:State>

В Flex4 это должно быть что-то вроде :

<mx:State name="only_view_mode" />

и

<mx:LinkButton id="button1" excludeFrom="???" />

Мой вопросявляется: как я могу получить доступ к состоянию приложения из компонента?Я проверил официальную ссылку (http://www.adobe.com/go/learn_flex4_alldocumentation_en) и Google, конечно, но безуспешно.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 24 июня 2010

Это на самом деле не сработало, так как для этого требуется строка. Я попробовал это всеми возможными способами, я мог понять. До сих пор я пришел с этим очень уродливым решением: я добавил прослушиватель событий для изменений состояния checkint моего компонента основного уровня:

<?xml version="1.0" encoding="utf-8"?>
<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" 
         creationComplete="{onCreationComplete();}">
    <fx:Script>
        <![CDATA[
            import mx.core.FlexGlobals;
            import mx.events.StateChangeEvent;
            private function onCreationComplete():void {
                FlexGlobals.topLevelApplication.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChanged);
            }

            private function onStateChanged(event:StateChangeEvent):void {
                currentState = event.newState;
            }
        ]]>
    </fx:Script>
    <s:states>
        <s:State name="default" />
        <s:State name="login" />
    </s:states>
    <s:TextArea includeIn="login"/>
</s:Panel>

Пожалуйста, дайте мне знать, если есть лучшее решение. Кстати, у меня есть догадка, что атрибут basedOn компонента State - это путь. Но не знаю, какой формат он ожидает:

    <s:State name="login" basedOn="???" />
0 голосов
/ 18 июня 2010

Попробуйте использовать

FlexGlobals.topLevelApplication.currentState

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/FlexGlobals.html?filter_flex=4

...