![]() |
Неактивность объекта после addChild()
Вопрос простой, знаю. И даже знаю что решение должно быть в одну строчку, но не нашел нигде ответа.
Вкратце о приложении. Есть MC с размещенными на нем текстовыми полями, кнопками, комбобоксами и т.д. У этого МС слушается событие нажатия кнопки с клавиатуры. Далее обработчик проверяет Enter ли эта нажатая кнопка, и если да, то проверяет корректность заполнения полей формы. Если ответ отрицательный то создается и добавляется на сцену (addChild) экземпляр класса MessageBox (мною созданного) с сообщением о некорректности ввода. У этого экземпляра так же слушается событие нажатия Enter'a. И...вопрос. Пока я не кликну мышкой на этот MessageBox, то его событие не будет слушаться, а по нажатию Enter'a будет выполняться обработчик головного МС. Вопрос видимо в активности MessageBox'a. Рыл-рыл что нибудь похожее, так ничего и не нашел. Код AS3:
Код AS3:
|
у вас кажется проблема с фокусом, вам нужно програмно после добавления перевести фокус на нужный объект.
Код AS3:
|
Частично это решило проблему.
Остальное не по данному вопросу. Спасибо. Добавлено через 36 минут Так. Назрела новая проблема. Значит последовательность действий: 1. Навешиваем слушателя нажатия Enter. 2. Заполняем поля. 3. Жмем Enter. 4. Создаем MessageBox, удаляем с основного МС слушателя Enter'a, чтобы по нажатию Enter обрабатывалось закрытие MessageBox'a. 5. Делаем addChild. Фокусируемся на MessageBox. 6. Жмем Enter. Обработчик закрывает MessageBox и диспатчит событие о том, что бокс закрыт. 7. В основном МС у созданного MessageBox слушается событие закрытия, и когда оно происходит, то на сам МС снова вешается слушатель события нажатия Enter. Но это не работает... Код AS3:
Код AS3:
Выглядит все так: ввожу данные, жму Enter, появляется MessageBox, жму Enter и дальше по видимому запускаются обработчики и главного МС и MessageBox'a, т.к. месседж сначала закрывается, а потом снова открывается.. |
а вы уверены что листенер с главного MC удаляется?
AddPurchaseScreen() я так понимаю констркутор, если да то сохраните ссылку на "this" в самом классе, чтобы удалить потом листенер в enterPressed. Вообще потрейсите везде где у вас this - он не во всех частях класса ссылается на один и тот же объект в as3. Возможно у вас накапливаются слушатели - это и мешает. |
вообще, чтобы проблем с фокусом не было, вешать слушателей на stage.
|
| Часовой пояс GMT +4, время: 23:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.