Flex ActionScriptでボタン状態を変更する方法は?
-
25-10-2019 - |
質問
私がすることができます:
<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つの状態を定義します correct
と wrong
.
<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の状態の概要