0

これは簡単だと思いますが、多くの Google がブレークポイントでオブジェクトを検索および検査しても答えが見つかりませんでした。

MXML で状態を定義できます。

<s:states>      
    <s:State name="state_1" />      
    <s:State name="state_2" />      
</s:states>

次に、これを行うことができます:

<s:Label id="lblTest" text="Hello" x.state_1="20"  x.state_2="100" />

Actionscript では、プロパティ値を設定できます。

lblTest.x = 150;

質問: 現在の状態に関係なく、Actionscript から lblTest の x.state_1 と x.state_2 の両方を設定するにはどうすればよいですか?

4

1 に答える 1

3

Actionscript で作業する場合、これほど単純なものはありません。状態固有のプロパティを使用して mxml ファイルをコンパイルすると、次のような Actionscript コードがコンストラクターで生成されます。

states = [
  new State ({
    name: "state_1",
    overrides: [
      new mx.states.SetProperty().initializeFromObject({
        target: "lblTest",
        name: "x",
        value: 20
      })
    ]
  })
  ,
  new State ({
    name: "state_2",
    overrides: [
      new mx.states.SetProperty().initializeFromObject({
        target: "lblTest",
        name: "x",
        value: 100
      })
    ]
  })
];

Actionscript で状態を作成している場合は、同様のことができます。既に設定されている状態固有のプロパティを変更したい場合は、それほど簡単ではありません。SetProperty各状態の配列でオブジェクトを見つけて、overridesそれを置き換え/変更する必要があります。

実際、状態固有のプロパティの威力は、MXML で適切に定義できることです。バインディングを使用してプロパティの値を設定し、基本的に必要なものを無料で取得できることを忘れないでください。

<s:Label id="lblTest" text="Hello" x.state_1="{state_1_value}"  x.state_2="100" />
于 2013-07-28T11:35:11.613 に答える