![]() |
Как добавить Listener к Button?
Насколько я понял у объекта Button отсуствует метод addListener(), а так хочется,
чтобы мой клип ловил скажем onRollOver от кнопок!!!. Именно от действующих кнопок на сцене. Есть выход? MovieClip тоже умеет генерить onRollOver, но это же не кнопка!!!. |
хм.
Код:
btn.onRollOver = function() {'btn' - это имя твоей кнопки 'mc' - это имя клипа, который ловит событие 'btnRollOver' |
Оо.. здарова Ноктис.
Читал твой урок тут. Респект, респект. :-) Теперь по делу. Все что ты написал не лишено смысла, но не подходит для моего случае. А случай тяжелый. Пишу мышиный компонент. Вот кусок кода:
Код:
#initclip |
ну, начнем с того, что Button.prototype.onRollOver тут не годится...
ведь тогда если определить у кнопки событие onRollOver - то онРоллОвер из прототипа вызываться не будет - а значит и твоя конструкция работать не будет... и addListener тут НЕ ПРИ ЧЕМ =) потому что онРоллОвер - это индивидуальное события каждой кнопки, а не что-то вроде онЕнтерФрейм или онМаусДаун, сообщения о которых рассылаются одновременно всем слушающим объектам... все хитрее - тебе нужно сделать так, чтобы кроме (КРОМЕ, а не ВМЕСТО) присвоенного онРоллОвера срабатывала еще и твоя функция настраивающая курсор... от того, как ты решишь эту, более сложную проблему - зависит где и как определить theTarget... мне счас лениво изобретать, спать пора =) |
так, очередной велосипед был успешно разработан и запущен =)))
Код:
// функция настройки курсора. вставишь все нужные тебе действия.если где-нить в скриптах будет определена функция onRollOver, то она будет выполняться после настройки курсора. теперь остается в тело функции rollOverCursor внести действия с представителем твоего класса mouseClass... |
Не поленился изобретать. За это спасибо. :-)
Гм.. интересную фишку выяснил. Если написать функцию для онРоллОвер и привязать ее к
кнопке, расположив код в фрэйме, как ты написал в предыдушем фржйме, то моя конструкция действительно не работает. НО(!!) если привязать код обработчика событии прямо к кнопке используя on(rollOver) { ... }, то все прекрасно пашет. Получается, что есть разница между этими двумя подходами к привязывания обработчика событии. Но это так, к слову, щас пойду пробовать то, что ты написал щас. А вообще ты брат молодец, не потому, что ты много чего знаешь, а потому что ленишься этим делится людям. Респект.! Если не влом поделись литературкой о недокументированых вохможностей. :-) Можно на мыло, если хочешь. groovesonic@vida.ru Спасибо за все. |
Только что прочел код...
Осознал -> Здорово.
Ключевым моментом является то, что каждый раз когда возникает какое либо событие, то автоматический вызывается его геттер, так? Это справедливо для всех событии? Главный глюк исправен, теперь надо подумать, как быть с theTarget, но это я пожалуй сам :-) |
Re: Не поленился изобретать. За это спасибо. :-)
Цитата:
Цитата:
открою страшную тайну... только никому ни слова... ЛЮБОЕ событие определенное в onClipEvent или on работает автономно относительно соответствующих событий определенных при помощи присвоения функций =) (например, если обработчик определен и так и так - то событие будет обрабатываться дважды =) ) Цитата:
в качестве с"войства" в данном случае метод onRollOver... запуск функции - тоже операция чтения. потому сначала вызывается геттер, от него получается ссылка на вызываемую функцию, происходит вызов полученной ссылки... |
Не подводи иток пока, есть еще пару вопросов. :-)
Цитата:
кстати раскрой секрет строчки кода Код:
ASSetpropflags(Button.prototype, ["getRollOver", "setRollOver"], 7); |
ASSetPropFlags(Button.prototype, ["getRollOver", "setRollOver"], 7);
делает новые методы класса Button - getRollOver и setRollOver - неизменяемыми (рид онли), - нестираемыми, - невидимыми, - несгораемыми, - ударопрочными, - водонепроницаемыми, - несодержащими искусственных красителей и консервантов =) естессно без этой строчки все работает - но делать все нужно надежно и как можно более дуракоустойчиво, служебные методы нужно прятать =) |
| Часовой пояс GMT +4, время: 18:11. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.