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
}
如何编码 启用。STATE1 在ActionScript?
谢谢
解决方案
我知道这不是您想听到的,但是无论如何它都会出现:您为什么要这样做?国家的全部目的是,您不必写大量的动作刻画来做同样的事情。
为什么你不能那样做
通过写作 Btn.enabled.State1
在ActionScript中,您本质上说:给我布尔实例的称为“启用”的属性。显然,这是不起作用的,因为布尔人没有这样的财产。您会混淆MXML点(。)符号 - 用于基于状态的属性分配值 - 与ActionScript 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;
}
}
(我使用的状态与詹姆斯的回答相同)
其他提示
我认为您可能在错误的上下文中使用状态。例如,您的组件包含一个用户输入,其中包含其旁边的按钮。仅当输入正确的单词时,该按钮才能启用。您将为组件定义两个状态,也许 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
.
通常,组件的特定属性设置为编译时间,并且组件本身的状态在运行时更改。
不隶属于 StackOverflow