解决组件中的Flex复选框

时间:2011-01-04 03:52:18

标签: flex actionscript-3 mxml

我在组件中有一个复选框:

<s:CheckBox id="myCB_1" />

在我的main.mxml中,我需要测试复选框的状态。我最初在main.mxml中拥有了所有代码,但它变得非常长,我认为将代码分解为组件是更好的做法。另外,我还有其他同样适用概念的项目,所以我真的很想弄明白。

我有以下功能:

private function checkAlarms(currentTime:Date):void
{
    if (!breakfastAlarmSounded)
    {
        if ((currentTime.hours > breakfastTime.hours) || ((currentTime.hours == breakfastTime.hours) && (currentTime.minutes >= breakfastTime.minutes)))
        {
            if (myCB_1.selected)
            {
                playBreakfastAudioAlarm();
            }
            if (myCB_2.selected)
            {
                playBreakfastVisualAlarm();
            }

            breakfastAlarmSounded = true;
        }
    }
...

简单地解决组件,如:

myComponent.myCB_1.selected

不起作用。有人提到我需要在我的组件中创建一个引用复选框的id(myCB_1)的变量,但我并不真正理解或知道如何做到这一点,并且他们没有详细说明。

如何在main.mxml中测试组件中CheckBox“myCB_1”的状态?

非常感谢,

标记

(新手)

4 个答案:

答案 0 :(得分:0)

由于信息非常少,我怀疑你最初将mainBox包含在main.mxml中并将其移动到自定义组件。如果是这样,您需要通过自定义组件的ID来解决CheckBox的ID。像这样的东西(来自main.mxml):

if(yourComponentsID.myCB_1.selected)
{
    ...
}

如果不是这样,请编辑您的帖子并提供更多详细信息。


修改

您说您创建了一个新的自定义组件并将CheckBox移入其中。太棒了,这是一个有用的开始:)当你在main.mxml文件中包含你的新组件时,它应该看起来像这样

<component:YourNewComponent />

当然,无论你命名它(以及用于引用它的命名空间)都将与我的例子不同,但原则仍应适用。在main.mxml中,您需要为自定义组件提供唯一的ID字符串,以便在main中引用它:

<component:YourNewComponent id="myComponent" />

从现在开始,您应该能够引用该组件及其中的所有公共元素:myComponent.myCB_1

答案 1 :(得分:0)

您需要参考组件中的复选框。让我们假设您在主体中使用您的组件,如下所示:

<local:MyComponent id="myComponent" />

在您的脚本中,您想要引用它:

if(myComponent.myCB_1.selected) { // do something }

答案 2 :(得分:0)

提供有关您使用此脚本的上下文的更多详细信息会很有用。尽管如此,我还是会抛弃一些可能有用的信息。

为了让脚本访问组件,它必须在组件的范围内。通常这意味着以下之一:

  • 您在MXML中有一个<script>标记,其中包含引用同一MXML文件中的组件的代码。
  • MXML中有<script source='external.as'/>标记,其中external.as引用MXML文件中的组件。
  • 您正在脚本中创建组件,并且您在ActionScript中有组件的定义(例如,var myCB_1:CheckBox;在类定义中)。

如果脚本和组件不在同一范围内,则他们无法看到彼此。

答案 3 :(得分:0)

奇怪的是,它有效。我得到一个1119错误(描述1119:通过带有静态类型Class的引用访问可能未定义的属性myCB_1。)当我引用带点符号的组件(myComponent.myCB_1.selected)和1120错误时(描述1120) :未通过myComponent解决时访问未定义属性myCB_1。

有了这些错误,我从没想过尝试运行这个东西。长话短说 - 无论是否寻址组件都会运行(???)go figure!

感谢所有的意见,并希望听到任何其他意见。

MCE