0

変数に [Bindable] タグが含まれていれば、コンポーネントのパラメーターを変数に依存させることができることを知っています。これは、Bindable 変数の値を更新すると、コンポーネントが自動的に更新されることを意味します。

別の変数をバインド可能な変数に依存させることは可能ですか?

以下の例では、変数 btnClicked がバインドされています。関数 btnClick() が呼び出されて btnClicked が変更されると、TextArea 内のテキストが期待どおりに更新されます。

btnClicked が更新されたときに、別の変数 btnText を更新できるようにしたいと考えています。この依存関係を伝える方法がわかりません。以下のコードでは、btnText の値は最初は予想どおり「clickMe」です。ただし、btnClicked が変更されても、ボタンのテキストは「unclickMe」に更新されません。

<fx:Script>
    <![CDATA[
        [Bindable]
        public var btnClicked:Boolean = false;

        public function btnClick():void{
            btnClicked = !btnClicked;
        }

        [Bindable]
        public function get btnText():String{
            return btnClicked?"unclickMe":"clickMe";
        }
    ]]>
</fx:Script>

<s:Button click="btnClick()" label="{btnText}"/>

<s:TextArea y="50" text="{btnClicked?'Button is clicked':'Button is unclicked'}"/>

btnClicked が変更されたときに btnText が自動的に更新されるように、上記のコードを変更するにはどうすればよいですか?

前の変数が更新されたときにそれぞれが更新される、接続された変数の任意の長さのチェーンを持つことは可能でしょうか?

4

3 に答える 3

2

この場合、btnClick関数を更新して をディスパッチするだけPropertyChangeEventです。

public function btnClick():void{
    btnClicked = !btnClicked;
    dispatchEvent(new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE));
}

これは、[Bindable] が機能する方法のために機能します - What does [Bindable] mean in actionscript?を参照してください。素敵な説明のために。 Bindable メタデータ タグの使用、関数、オブジェクト、および配列へのバインドも、バックグラウンドでの読み取りに適したリソースです。

編集: import ステートメントを忘れないでください!

import mx.events.PropertyChangeEvent;

ctrl-spaceを入力しているときに、Flash Builder によって import ステートメントが挿入されますPropertyChangeEvent

于 2015-11-04T16:01:40.337 に答える