![]() |
Заставить onLoad быть onLoadMoment
Здравствуйте, всем!
Есть задача, смысл её, мягко сказать, тупой, но нужно сделать. Есть компонент,если на таймлайне написать mc.onLoad, событие не должно срабатывать. Я знаю о существовании перезагрузки событий/методов, но пример не смог найти. Помогите, пожалуйста, решить эту проблему:) |
lazutkin! Просьба разъяснить более подробно задачу либо проблему, а то не ясно чего Вы хотите.
|
Есть компонент, пользователь кидает его на сцену, называет его "mc".
Дальше пишет "mc.onLoad = fun...", и конечно же событие вызывается. Моя задача сделать так, что бы это событие не вызывалось, не срабатывало. Есть решение - переименовать это событие, например, в "onLoadMoment" :) Пожалуйста, подскажите, как я могу переименовать это стандартное событие? |
Цитата:
Цитата:
Наверно это, чтобы при событии onLoad никто не принял это событие, а на onLoadMoment приняли подписанные слушатели, но при этом событие onLoadMoment является точной копией onLoad. Если это так, то можно попробовать сделать так: 1. Создать экземпляр Object 2. Применить к нему класс ASBroadcaster; 3. Подписать этот экземпляр на прослушивание события onLoad объекта mc; 4. Подписать какой-либо объект на событие onLoadMoment объекта Object; 5. В обработчике события onLoad этого экземпляра Object, вызвать метод broadcastMessage() с событием onLoadMoment, ну естественно все слушатели, подписанные на данное событие будет его получать. |
Alex_beginner, спасибо за полезную информацию.
Я использовал ваш способ, работает, но то , что мне нужно. Мне необходимо , как бы, уничтожить событие "onLoad". Как вариант - переименовать его ("перезагрузка событий/методов" - мне советовали) Но мне подойдет любой способ, лишь бы "onLoad" не работал :) |
Само событие уничтожить нельзя, а вот обработчик переопределить (удалить) пустым обработчиком можно. Просто у события не будет слушателей и обработчиков.
Перегрузка событий/методов это немного другое...Перегрузка (не перезагрузка) событий/методов в базовых языках представляется как наличие множества методов с одинаковыми именами, но разлиной сигнатурой (параметры метода). Увы в АС2, насколько мне известно, отсутствует такая возможность в том виде в котором она представлена в базовых языках, но имеется альтернативный алгоритм с использованием объекта arguments. Кстати вопрос: о каком компоненте идет речь? Возможно, мне удастся переопределить (удалить - delete) его обработчик события пустым обработчиком, что визуально выразиться как отсутствие события. |
Код:
/** |
wvxvw! Приятный код. Но тем не менее событие не уничтожается, обработчик скрыто координирует действия, но вот с переопределением интересный финт.
|
Эхх!!! Спасибо, вам!!!
Требуемый результат достигнут. Да, эта цель не имеет смысла, но, к сожалению, не всегда можно выбрать самому, чем заниматься :) |
Просто, я так понимаю, в компоненте уже задан обработчик onLoad, а если пользователь случайно его переопределит, то компонент не будет работать. Если чесно, я бы скорее отказался от использования onLoad для инициализации, чем делать такие непонятные пользователю вещи =) ну, или уж как-нибудь добавлял вызов пользовательской функции после "родной" инициализации. Т.е. при попытке пользователем переопределить onLoad записывал бы ссылку на пользовательскую функцию в переменную класса, и вызывал бы ее в конце "родного" онлоад:
Код:
/**Код:
import mx.utils.Delegate; |
| Часовой пояс GMT +4, время: 23:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.