我在组件中有一个复选框:
<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”的状态?
非常感谢,标记
(新手)
答案 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)
提供有关您使用此脚本的上下文的更多详细信息会很有用。尽管如此,我还是会抛弃一些可能有用的信息。
为了让脚本访问组件,它必须在组件的范围内。通常这意味着以下之一:
<script>
标记,其中包含引用同一MXML文件中的组件的代码。<script source='external.as'/>
标记,其中external.as
引用MXML文件中的组件。var myCB_1:CheckBox;
在类定义中)。如果脚本和组件不在同一范围内,则他们无法看到彼此。
答案 3 :(得分:0)
奇怪的是,它有效。我得到一个1119错误(描述1119:通过带有静态类型Class的引用访问可能未定义的属性myCB_1。)当我引用带点符号的组件(myComponent.myCB_1.selected)和1120错误时(描述1120) :未通过myComponent解决时访问未定义属性myCB_1。
有了这些错误,我从没想过尝试运行这个东西。长话短说 - 无论是否寻址组件都会运行(???)go figure!
感谢所有的意见,并希望听到任何其他意见。
MCE