2012-04-16 3 views
1

Я начинаю сдаваться на форумах Flex, поэтому я перейду сюда и посмотрю, как все идет. Долгое время lurker, первый раз постер ;-)Пользовательские компоненты Flex, события и область действия

Я задерживаю события клавиатуры на сцене и рассылаю пользовательские события через фреймворк (Mate, хотя я не знаю, что это важная проблема) m довольно запутанным масштабом. Структура:

--application (перехватывает события клавиатуры и отправляет пользовательское событие

-- mainPanel (receives dispatched events but mainCalendar (a child element) 
    is null on debugging. Obviously if I try to call a public method on 
    mainCalendar it errors out, even though it's a child of mainPanel. 
    However, mainCalendar is NOT null IF I use 
    FlexGlobals.topLevelApplication.mainPanel.mainCalendar. 
    Outerdocument and parentDocument do not expose mainCalendar either, BTW 

    -- mainCalendar (a custom component inside mainPanel with public methods. 
     Creation policy is 'all' and it's visible and exists long before I 
     trap any keystrokes at the top level) 

Может кто-то занять минуту и ​​объяснить, почему mainCalendar выходит за рамки, когда mainPanel получает пользовательское событие, даже если mainCalendar является дочерним mainPanel. есть ли лучший способ управлять событиями, так что я не должен всегда обращаться к компоненте через topLevelApplication?

Благодаря

+1

Не похоже, проблема с прицелом, больше времени. Какое событие вы используете, когда компонент равен нулю? (Является ли это до или после события 'initialize'?) – alxx

+0

alxx является правильным; возможно, что mainCalendar еще не создан, когда вы пытаетесь получить к нему доступ в первый раз. Даже после запуска инициализации возможно, что Flex еще не создал его (например, если компонент не отображается) – Eduardo

+0

Вы правы, когда говорите, что не должны получать доступ к topLevelApplication. Именно для этого необходимы события: любой компонент может прослушивать любое событие. Но так как я точно не знаю, что вы пытаетесь сделать, я могу указать только на [основы обработки событий в AS] (http://www.adobe.com/devnet/actionscript/articles/event_handling_as3.html). Кроме того, поскольку вы используете Mate, я бы предположил, что у него есть некоторые функции обработки событий, поэтому вы можете читать в [docs] (http://mate.asfusion.com/page/documentation/) там тоже , – RIAstar

ответ

1

(создание ответа так этот вопрос может быть помечен как ответ)
Обычно, когда ссылка на компонент является нулевой, а это не должно, значит, компонент еще не создан. Это может иметь место перед приложением initialize или если родитель компонента не отображается и не проверяется.

+0

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

Смежные вопросы