Я начинаю сдаваться на форумах 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?
Благодаря
Не похоже, проблема с прицелом, больше времени. Какое событие вы используете, когда компонент равен нулю? (Является ли это до или после события 'initialize'?) – alxx
alxx является правильным; возможно, что mainCalendar еще не создан, когда вы пытаетесь получить к нему доступ в первый раз. Даже после запуска инициализации возможно, что Flex еще не создал его (например, если компонент не отображается) – Eduardo
Вы правы, когда говорите, что не должны получать доступ к topLevelApplication. Именно для этого необходимы события: любой компонент может прослушивать любое событие. Но так как я точно не знаю, что вы пытаетесь сделать, я могу указать только на [основы обработки событий в AS] (http://www.adobe.com/devnet/actionscript/articles/event_handling_as3.html). Кроме того, поскольку вы используете Mate, я бы предположил, что у него есть некоторые функции обработки событий, поэтому вы можете читать в [docs] (http://mate.asfusion.com/page/documentation/) там тоже , – RIAstar