0

我编写了这个函数来响应一个单独的函数中的事件监听器:

编辑:用工作代码更新。

       function greyOutItems(event:Event):void {

        if (DisableCheckBox.selected) {
            myComboBox.alpha = 0.5;

            myComboBox.enabled = false;
            trace("hide combobox success");
        }
        if (DisableCheckBox.selected == false) {
            myComboBox.visible = true;
            myComboBox.enabled = true;
            trace("visible");
        }
    }

第一条if语句运行良好,当用户单击 CheckBox 时隐藏 ComboBox,但我希望用户能够取消选中同一个 CheckBox 并使 ComboBox 再次可见。

理想情况下,与其将 alpha 属性设置为 0,我更喜欢 ComboBox 是否“变灰”,尽管我还没有找到这样做的属性。

4

3 回答 3

1

你的 if 语句是错误的。=是赋值。您应该使用==selected直接在 if 语句中使用。

if (DisableCheckBox.selected) {
    myComboBox.alpha = 0;
    trace("success");
}
if (!DisableCheckBox.selected) {
    myComboBox.alpha = 1;
    trace("revisible");
}
于 2013-04-18T15:59:39.787 回答
1

如果myComboBox是一个影片剪辑,您可以将按钮“变灰”而不是使用该alpha属性的一种方法是在其后面添加第二帧,该帧位于灰色、半 alpha 框或您可以在 Flash 编辑器中更好地控制的类似效果的后面。

然后,在您的代码中,您可以myComboBox.gotoAndStop(2)将框变灰或myComboBox.gotoAndStop(1)使其恢复正常。

于 2013-04-18T16:02:48.343 回答
1

您的条件将始终为真,因为您将它们设置为条件中的该值。“=”仅用于“分配”属性。“==”是“等价于”。所以if (DisableCheckBox.selected = true)实际上将selected属性设置为 true 和条件的工作方式,因为它成功设置了值,所以它被标记为 true 语句。

function greyOutItems(event:Event):void {
    if (DisableCheckBox.selected == true) {
        myComboBox.alpha = 0;
        trace("success");
    }
    if (DisableCheckBox.selected == false) {
        myComboBox.alpha = 1;
        trace("revisible");
    }
}

但是,在这种情况下,您也应该使用else而不是第二个条件。else 语句在运行时会运行得稍微快一些(因为它不必检查第二个条件,所以如果所有条件都为假,它只会运行 else)。不够引人注目,但如果你多次这样做,它就会增加

于 2013-04-18T16:08:36.657 回答