我可以做这个:

<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;
    }
}

(我使用的状态与詹姆斯的回答相同)

其他提示

我认为您可能在错误的上下文中使用状态。例如,您的组件包含一个用户输入,其中包含其旁边的按钮。仅当输入正确的单词时,该按钮才能启用。您将为组件定义两个状态,也许 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