0

Flex3アプリをFlex4(FlashBuilder4)に移植しています。1つを除いて、まったく新しい状態の概念を取得します。カスタムコンポーネント(個別の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をチェックしましたが、成功しませんでした。

前もって感謝します

4

2 に答える 2

0

使ってみてください

FlexGlobals.topLevelApplication.currentState

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

于 2010-06-18T07:00:15.787 に答える
0

文字列が必要なため、実際には機能しませんでした。私は私が理解できるあらゆる方法でそれを試しました。これまでのところ、この非常に醜い解決策がありました。メインレベルのコンポーネントの状態変化をチェックするためのイベントリスナーを追加します。

<?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>

より良い解決策があるかどうか教えてください。ところで、StateコンポーネントのbasedOn属性が進むべき道であるという予感があります。しかし、それがどのようなフォーマットを期待しているのかわからない:

    <s:State name="login" basedOn="???" />
于 2010-06-24T18:58:17.107 に答える