0

私は次のフレックスコンポーネントを持っています:

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         width="400" 
         height="300"
         borderColor.male="blue"
         borderColor.female="#FF00F6"
         initialize="init(event)">

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            protected function genderChanged(event:Event):void
            {               
                setByRadioGroup();
            }

            protected function init(event:FlexEvent):void
            {
                currentState = "male";
                //setByRadioGroup()
            }

            protected function setByRadioGroup():void {
                currentState = genderGroup.selectedValue as String;
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:RadioButtonGroup id="genderGroup" change="genderChanged(event)">

        </s:RadioButtonGroup>
    </fx:Declarations>
    <s:states>
        <s:State name="male"/>
        <s:State name="female"/>
    </s:states>
    <s:Form>
        <s:FormItem label="name">
            <s:TextInput name="nameField" id="nameField"/>
        </s:FormItem>
        <s:FormItem label="gender">
            <s:RadioButton label="male" groupName="genderGroup" selected.male="true"/>
            <s:RadioButton label="female" groupName="genderGroup" selected.female="true"/>
        </s:FormItem>
    </s:Form>
</s:BorderContainer>

currentState を「male」に設定して、コンポーネントの状態全体 (選択したラジオ ボタンを含む) を初期化しようとしています。これは最初は機能します(正しいラジオボタンが選択され、境界線は青です): 初期状態

しかし、他のラジオ ボタンをクリックすると、UI が奇妙な状態になることがあります。ラジオの選択は元に戻りますが、境界線の色が変わります。 クリック後

ここにある種のレースがありますか?

Flex 4.6.0 と Flash Builder 4.7 を使用しています。

4

1 に答える 1

1

期待どおりに機能するためには、他の状態の選択された値も伝える必要があります。

<s:RadioButton label="male" groupName="genderGroup" selected.male="true" selected.female="false"/>
<s:RadioButton label="female" groupName="genderGroup" selected.female="true" selected.male="false"/>

選択した値を状態識別子で設定したくはありませんが。コンポーネントに状態変更リスナーを追加し、選択した値をそのハンドラー関数に設定します。しかし、これは個人的な選択にすぎません....

于 2013-03-03T11:09:24.587 に答える