簡體   English   中英

解決組件中的Flex復選框

[英]address a Flex checkbox in a component

我在組件中有一個復選框:

<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”的狀態?

非常感謝,

標記

(新手)

信息很少,我會懷疑您最初在Main.mxml中包含CheckBox並將其移到了自定義組件中。 如果是這樣,則需要通過自定義組件的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

您需要通過組件引用該復選框。 假設您在主體中使用組件是這樣的:

<local:MyComponent id="myComponent" />

在腳本中,您想引用它:

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

提供有關您使用此腳本的上下文的更多詳細信息將很有用。 盡管如此,我將拋出一些可能有所幫助的信息。

為了使腳本能夠訪問組件,它必須在組件的范圍之內。 通常,這意味着以下之一:

  • 您在MXML中有一個<script>標記,其中的代碼引用了同一MXML文件中的組件。
  • 您在MXML中有一個<script source='external.as'/>標記,其中external.as引用了MXML文件中的組件。
  • 您正在腳本中創建組件,並且在ActionScript中有該組件的定義(例如, var myCB_1:CheckBox;在類定義中)。

如果腳本和組件不在同一個范圍內,則它們將看不到彼此。

奇怪的是,它有效。 當我用點表示法(myComponent.myCB_1.selected)引用組件和1120錯誤(描述1120)時,遇到了1119錯誤(描述1119:通過具有靜態類型Class的引用訪問可能未定義的屬性myCB_1)。 :未通過myComponent尋址時,訪問未定義的屬性myCB_1)。

遇到這些錯誤,我從沒想過要嘗試運行它。 長話短說-它可以在有或沒有解決組件(???)的情況下運行!

感謝您的所有意見,並希望聽到其他意見。

MCE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM