Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   PopupManager помогите решить проблему (http://www.flasher.ru/forum/showthread.php?t=187428)

Vasyaga 19.11.2012 12:07

PopupManager помогите решить проблему
 
Недавно столкнулся с проблемой: В приложении есть окно с контролами. Фактически, оно является дочерним элементом контейнера Application. В этом окне при нажатии на кнопку пытаюсь вызвать модальный popup-диалог с помощью PopUpManager. Выдает следующую ошибку:
Код:

[Fault] exception, information=ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
Вызываемый модальный диалог унаследован от TitleWindow. Причем способ вызова всплывающего окна не важен - хоть PopupManager.createPopup, хоть PopupManager.addPopup (для уже созданного экземпляра диалога). Пытался отладчиком посмотреть - никаких результатов - ошибка вылетает после клика, но до захода в обработчик события нажатия на кнопку. Похоже, событие перехватывается SystemManager. Вот скриншот стека во время ошибки:
http://www.flasher.ru/forum/picture....&pictureid=325
Есть ли у кого мысли по этому поводу? Всю голову сломал ;)

Astraport 19.11.2012 13:23

Желательно хотя бы минимум кода. Одно окно вызывается из другого окна?

Vasyaga 19.11.2012 13:59

Код AS3:

                public function popupWizard() : IFlexDisplayObject {
                        var displayObject:IFlexDisplayObject =PopUpManager.createPopUp(this, GalleryWizard, true);
                        return displayObject;
                }

Функция popupWizard описана в mxml-е вызывающего окна. GalleryWizard - наследник TitleWindow

Astraport 19.11.2012 14:57

Так ошибка в этой строке var displayObject:IFlexDisplayObject =PopUpManager.createPopUp(this, GalleryWizard, true); ? В каком именно параметре?

Можно попробовать вместо parent использовать FlexGlobals.topLevelAplication

Vasyaga 19.11.2012 15:49

В том-то и дело, что ни в каком параметре ошибки нет! Ошибка возникает раньше. Опишу по шагам:
1) Ставлю breakpoint отладчика на строку вызова popup.
2) Запускаю приложение и дебаг не доходит до обработчика события CLICK и тем более до вызова PopUpManager.
3) Если закомментировать весь код с PopUpManager, то все начинает работать без ошибок

alatar 19.11.2012 20:31

Цитата:

В приложении есть окно с контролами.
Какое окно? Созданное PopUpManager?

Цитата:

Похоже, событие перехватывается SystemManager.
SystemManager подписывается на capture фазу события MOUSE_DOWN.

Стек полностью приведите.
Посмотрите что приходит в качестве target в mouseEventHandler в SystemManager или в mouseDownHandler в ActiveWindowManager.

Vasyaga 20.11.2012 09:25

Цитата:

Какое окно? Созданное PopUpManager?
Нет, это mxml-Application (не обязательно верхнего уровня), которое будет родителем для созданного PopUpManager-ом окна
Цитата:

SystemManager подписывается на capture фазу события MOUSE_DOWN.

Стек полностью приведите.
Посмотрите что приходит в качестве target в mouseEventHandler в SystemManager или в mouseDownHandler в ActiveWindowManager.
Хорошо, посмотрю, спасибо.

Vasyaga 20.11.2012 11:32

Вложений: 1
alatar, по target: Действительно, отрабатывается событие 'MOUSE_DOWN' в ActiveWindowManager. В качестве target там присутствует контрол, на котором нажата кнопка мыши. Естественно, target меняется в зависимости от того, на что нажали.
В качестве currentTarget там выступает экземпляр SystemManager с классом документа (главный mxml) в качестве child. Скриншот стека во вложении.
Теряюсь в догадках в чем может быть проблема.
Я просто не могу понять сути - откуда ошибка? В чем разница между адобовским примером и моим приложением?

alatar 20.11.2012 19:35

Цитата:

Скриншот стека во вложении.
Трейс стека можно взять из консоли в виде текста. Что толку от ваших обрезков?

Vasyaga 20.11.2012 20:13

Цитата:

Трейс стека можно взять из консоли в виде текста. Что толку от ваших обрезков?
Я, конечно, извиняюсь, но как это сделать во FlashDevelop?


Часовой пояс GMT +4, время: 10:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.