0

次の例を見てみましょう。

<mx:State name="sayHello">
            <mx:SetProperty name="preText" target="{this}" value="Hello"><mx:SetProperty>
</mx:State>

preText プロパティが hello に設定されていることをどうにかして知ることはできますか?

すでに試しました: state->activate state->enterState state->exitState

UIComponent->currentStateChange

上記のすべてのケースで、pretext プロパティは null ですが、どういうわけか、後で目的の値を取得します (タイマーでテストしました)。

どんな助けでも素晴らしいでしょう!ありがとう!

4

1 に答える 1

0

言うのは難しいです。Flex Framework によって実装されるほとんどのプロパティは、propertyChangedEvent を送出します。したがって、この場合、問題のコンポーネントで preTextChanged イベントをリッスンして、プロパティが変更されたことを知らせることができます。

これが自分で実装したプロパティである場合は、次のように、プロパティの set メソッドでイベントをディスパッチするだけです。

dispatchEvent(new Event('preTextChanged'));

次のようにリスナーを追加します。

this.addEventListener('preTextChanged',onpreTextChanged);

イベントのイベント メタデータを定義しない場合、MXML でプロパティ変更イベントをリッスンすることはできません。ほとんどのコンポーネントは、propertyChanged イベントのメタデータをわざわざ定義しません。

状態を変更する操作には時間がかかる場合があります。Flex/Flash Player の非同期の性質により、次のようになります。

currentState = newState
trace(preText);

状態変更処理がまだ行われていないため、トレース値はまだ設定されていない可能性があります。ただし、 currentStateChangeイベントをリッスンできる場合があります。それがディスパッチされたら、プロパティをすべて変更する必要があります。

于 2010-08-28T02:07:36.837 に答える