![]() |
Можно ли подписаться на ADDED_TO_STAGE и не отписываться?
Есть простой пример... Что-то типа классического, виндового MenuItem, с горячей клавишей. Для пункта необходимо слушать глобальные события клавиатуры. По ADDED_TO_STAGE подписываюсь на клавиатуру, по REMOVED_FROM_STAGE, отписываюсь. Но выходит что от самих ADDED_TO_STAGE и REMOVED_FROM_STAGE отписаться нельзя, разве что ручками, что не есть айс.
Подписался с использованием useWeakReference. Будет работать? В смысле коллектор все соберет, если про кнопку "забудут"? Типа пример: Код AS3:
Быть может есть какие то другие варианты? От глобальный диспечера сообщений клавиатуры отказался по причине того, что: 1)Горячая клавиша может смениться в любой момент в Runtime, через свойство пункта меню 2)У пункта меню, кроме всего прочего, должны проверяются свойства enable, visible 3)Горячая клавиша перестает работать, если меню или пункт меню детачат, но снова начинает работать, когда она атачится. Все это можно реализовать имея менеджер горячих клавиш, но получится во первых сложнее. Во вторых не решит проблему, так как для реализации пункта 3 все равно нужно слушать ADD_TO_STAGE... P.S. Собственно хочу реализовать что-то типа описанного тут: http://www.rsdn.ru/article/patterns/patterncommand.xml Добавлено через 51 минуту Проверил экспериментальным путем. ADDED_TO_STAGE ссылку не держит, даже если не указывать weakReference. Т.е. коллектор MenuItem прекрасно удаляет. |
а зачем вам внутри MenuItem в каждом обрабатывать клавиатуру.
в классе-создателе ваших менюАйтемов пихайте их в словарь и подписывайте на события. по АДД примерно будет выглядеть как : Код AS3:
Код AS3:
собсно хотел просто мысль донести. |
2cleptoman: Согласен.
|
| Часовой пояс GMT +4, время: 00:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.