![]() |
listeners я запутался, помогите понять.
Всем доброго времени суток. Решил вплотную заняться изучением слушателей. И сразу же возникло несколько вопросто на которые в хелпе не могу найти ответов. Почему это работает
Код:
var myListener:Object = new Object();Код:
var myListener:Object = new Object();Дальше хуже, второе что меня поставило в тупик в чем разница между addListener and addEventListener. Как я понял из книги которую я читаю первый используется в MovieClipLoader Class, но в хелпе, если я не ошибаюсь они используют addListener и в обычных примерах.:moder: |
addListener() - можно вызвать у объекта инициализированого AsBroadcaster'ом, что это значит:
когда вы вызываете AsBroadcaster.initialize(myObject), AsBroadcaster создаст массив слушателей (туда можно занести что угодно) и допишет myObject методы addListener, removeListener, broadcastMessage. Как это будет работать: когда myObject вызовет broadcastMessage("someString", argument0, ...argumentN), то это будет так же значить, что у всех объектов занесенных в массив _listeners у myObject будет вызван метод someString и в него будут переданы аргументы argument0, ...argumentN. addEventListener() - можно вызвать у объекта инициализированого EventDispatcher'ом (или EventDispatcherMX). Что это значит: у myObject будут методы addEventListener, removeEventListener, dispatchEvent. Когда вы вызовете dispatchEvent у myObject то все методы других объектов подписаных на это событие будут вызваны, и им будет передан объект события в качестве аргумента: пример: Код:
obj.someMethod = function(evtObj:Object):Void[Event("change")] [Event("click")] |
to wvxvw: Спасибо за развернутый урок. Поправь меня если я не прав, addListener() не привязан MovieClipLoader Class, а может быть использован и с другими классами.
|
Цитата:
А addListener - это реальный (встроенный) метод. Потом, клипы изначально слышат (подписаны на) мышиные события (типа onRollOver), а остальные методы надо еще заставить услышать. |
to chingachgoog: а как найти какие медоды работают с addEventListener. Попробовал в хелпе забить [Event("change")] или [Event("click")], ничего нету, пишу Event("change"), так там куча ненужного материала. А методом вытка тоже пытаться не хочется.Из книги нашел некоторые методы, как click, itemRollOver, change. Но дело в том что каждый из этих событий привязан к определенному элементу. А к какому какой, вот это мой вопрос. (кроме click, этот уже понятно кому принадлежит)
|
Если честно, то я не уверен, есть ли такая сборка по всем евентам всех компонентов, но, в принципе, как мне кажется не составит большого труда:
Вы знаете, какой компонент собираетесь использовать -> идем вот сюда: C:\Program Files\Adobe\Adobe Flash CS3\en\First Run\Classes\mx\controls например (ну, или куда там Флеш установлен), отыскиваем нужный компонент и смотрим [Event()] тэги. Ну, только, это, положа руку на сердце... они не хорошие эти компоненты =) Если вы планируете долгосрочную разработку, с последующей поддержкой или просто компилировать чем-то нормальным типа MTASC'а, то головной боли будет гарантировано много от их использования =) А если слепить, отдать и быстро свалить - тогда можно =) Да, ксати, есть еще и UIEventDispatcher класс (наплодили ж их =) Вобщем, скорее всего, что все, что наследуется от UIComponent скорее всего использует именно его, а значит в наличие могут быть следующие события: UIEventDispatcher.keyDown UIEventDispatcher.keyUp UIEventDispatcher.load UIEventDispatcher.mouseDown UIEventDispatcher.mouseOut UIEventDispatcher.mouseOver UIEventDispatcher.mouseUp UIEventDispatcher.unload Читать тут: http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00003641.html Но, вполне возможно, что их реально больше, да и кроме того, создать еще одно событие вобщем-то не сложно =) |
to wvxvw: понял. Спасибо.
|
Эти события нужно искать в Components Reference. Например, выбираешь Button component --> Button class --> Event summary. В случае с Button component своих событий он не имеет - событие click наследуется от SimpleButton. С клипами тоже работает.
Можно так создать события: Код:
var someObject:Object = new Object(); |
| Часовой пояс GMT +4, время: 14:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.