質問

私がすることができます:

<s:Button id="Btn" enabled.State1="false" />

しかし、次のコードは私にエラーを与えてくれます。

 private function enableDisable():void{
       Btn.enabled.State1="false";  //Error: Access of undefined property State1
      }

コーディング方法 enabled.state1 ActionScriptで?

ありがとう

役に立ちましたか?

解決

私はこれがあなたが聞きたいものではないことを知っていますが、ここではとにかく行きます:なぜあなたはそれをしたいのですか?州の全体的な目的は、同じことをするためにたくさんのActionScriptを書く必要がないということです。

なぜそんなことができないのか

書くことによって Btn.enabled.State1 ActionScriptでは、本質的に次のように言っています。「enabled」と呼ばれるブールインスタンスの「state1」と呼ばれるプロパティを教えてください。ブール値にはそのようなプロパティがないため、明らかに機能しません。 MXML DOT(。)表記(ActionScript Dot表記)に基づいてプロパティに値を割り当てるために使用されるMXML DOT(。)表記を混同しています。

解決策 またはそれが得られるのと同じくらい近い

MXMLで使用するのはこの機能の本質であるため、ActionScriptで求めていることを正確に行うことはできません。次の最高のことは、聞くことです StateChangeEvent ENは、新しい状態名に従ってボタンの「有効」プロパティを設定します。

addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChange);

private function onStateChange(event:StateChangeEvent):void {
    switch (event.newState) {
        case "wrong":   Btn.enabled = false; break;
        case "correct": Btn.enabled = true; break;
    }
}

(私はジェームズの答えと同じ状態を使用しています)

他のヒント

間違った文脈で状態を使用している可能性があると思います。たとえば、隣にボタンが付いたユーザー入力を含むコンポーネントがあります。ボタンは、正しい単語が入力されている場合にのみ有効になります。おそらく、コンポーネントの2つの状態を定義します correctwrong.

<s:states>
    <s:State name="wrong" />
    <s:State name="correct" />
<s:states>

その場合、上記のことと同様に、状態に応じてボタンの個々のプロパティを設定します。

<s:Button id="Btn" enabled.wrong="false" enabled.correct="true" />

デフォルトでは、コンポーネントの状態は wrong. 。ユーザーの入力を処理し、正しい単語が入力されているかどうかを確認した後、コンポーネントの状態が変更されます correct.

通常、コンポーネントの状態固有の特性はコンパイル時間に設定され、コンポーネント自体の状態は実行時に変更されます。

ここは Flex 4.6の状態の概要

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top