обратиться к флажку Flex в компоненте - PullRequest
0 голосов
/ 04 января 2011

У меня есть флажок в компоненте:

<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) флажка, но я не совсем понимаю или не знаю, как это сделать, и они не уточнили.Как проверить статус CheckBox "myCB_1" в компоненте из моего main.mxml?

большое спасибо,

Mark

(новичок)

Ответы [ 4 ]

0 голосов
/ 04 января 2011

Как ни странно, все работает. Я получал ошибку 1119 (описание 1119: доступ к неопределенному свойству myCB_1 через ссылку со статическим типом Class.), Когда я ссылаюсь на компонент с точечной нотацией (myComponent.myCB_1.selected) и ошибку 1120 (описание 1120 : Доступ к неопределенному свойству myCB_1), когда он не обращается к нему через myComponent.

С этими ошибками я никогда не думал, что попробую запустить эту штуку. Короче говоря - он работает с компонентом или без него (???) иди!

спасибо за все комментарии и хотел бы услышать любые другие комментарии.

MCE

0 голосов
/ 04 января 2011

Вам необходимо обратиться к флажку через компонент. Допустим, вы используете свой компонент в своем основном как это:

<local:MyComponent id="myComponent" />

В вашем скрипте вы хотите сослаться на него:

if(myComponent.myCB_1.selected) { // do something }
0 голосов
/ 04 января 2011

Было бы полезно предоставить более подробную информацию о контексте, в котором вы используете этот скрипт. Тем не менее я собираюсь выбросить некоторую информацию, которая может помочь.

Чтобы скрипт мог получить доступ к компоненту, он должен находиться в области действия компонента. Обычно это означает одно из следующего:

  • У вас есть тег <script> в MXML с кодом в нем, который ссылается на компоненты в том же файле MXML.
  • У вас есть тег <script source='external.as'/> в MXML, где external.as ссылается на компоненты в файле MXML.
  • Вы создаете компонент в своем скрипте, и у вас есть определение для компонента в ActionScript (например, var myCB_1:CheckBox; находится в определении класса).

Если скрипт и компонент не находятся в одной области видимости, они не могут видеть друг друга.

0 голосов
/ 04 января 2011

Имея очень мало информации, я подозреваю, что вы изначально включили CheckBox в main.mxml и перенесли его в пользовательский компонент. Если это так, вам нужно обратиться к идентификатору CheckBox через идентификатор пользовательского компонента. Примерно так (из main.mxml):

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

Если это не так, пожалуйста, отредактируйте свое сообщение и сообщите нам более подробно.


EDIT

Вы сказали, что создали новый пользовательский компонент и перенесли в него CheckBox. Отлично, это полезное начало :) Когда вы включили свой новый компонент в файл main.mxml, он должен выглядеть что-то примерно так:

<component:YourNewComponent />

Конечно, как бы вы ни назвали его (и какое бы пространство имен оно ни использовалось для ссылки на него) будет отличаться от моего примера, но принцип все равно должен применяться. В main.mxml вам нужно дать вашему пользовательскому компоненту уникальную строку идентификатора, чтобы вы могли ссылаться на нее в main:

<component:YourNewComponent id="myComponent" />

С этого момента вы сможете ссылаться на компонент и любые открытые элементы внутри него: myComponent.myCB_1.

...