![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 130
|
1. Визуальные объекты. Как флеш определяет, по какой кнопке щелкнули? Например, составляет список визуальных объектов вроде Имя:Координаты, при щелчке сравнивает (вычисляет...) координаты курсора с координатами из списка, если подходят - берет соответствующее имя объекта и записывает в target объекта MouseEvent?
2. Событийная модель только для предопределенных событий? Или внутреннюю бизнес-логику так же можно построить на событиях? |
|
|||||
|
1 примерно да
2 нет, да
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Мне в этом отношении очень понравилась Qt-шная модель сигнал-слот. Жаль, что на флэше такое по-нормальному реализовать не получится...
|
|
|||||
|
Регистрация: Sep 2009
Сообщений: 130
|
Ясно, спасибо.
Не могу понять преимущества модели, что "перегружать" обработчик теперь не нужно. Зачем? Например, в билдере, в main создал нужные объекты, инициализировал\провел начальные операции. Затем в обработчике прописываю все действия над этими объектами... Либо это из-за специфики флеша.. з.ы. На первый взгляд в AS3 можно сделать также - написать все в одном обработчике самого EventDispatcher-наследника. Только в билдере объекты были в main и их не нужно было передавать в обработчик аргументом, а тут вроде так нельзя - хочешь использовать соседний объект - напиши его в списке аргументов. |
|
|||||
|
на самом деле все примерно также как и в делфи. я же пример вам писал. просто в as более гибко и универсально все. и чтобы не копировать весь функционал, он помещен в класс EventDispatcher.
можете организовать события и как в делфи. никто вас ругать не будет ![]() public class Simple extend Sprite { private var _onClick:Function; private function clickHandler(event:MouseEvent):void { if (_onClick) { _onClick(event); } } public function Simple() { super.addEventListener(MouseEvent.CLICK, clickHandler); } public function set onClick(value:Function):void { _onClick = value; } public function get onClick():Function; { return _onClick; } } Цитата:
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 130
|
Цитата:
Цитата:
"С обычными обработчиками событий, такими как обработчик события onLoad для XML объекта, можно определить только одну функцию onLoad. Если вы определите ее снова, то прежняя функция onLoad будет переписана и вытеснена новым определением. Было очень трудно иметь более одного обработчика, привязанного к одному событию." |
|
|||||
|
Цитата:
в ас можно использовать не один обработчик, а сколько угодно.
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 130
|
Ааа, может имеется ввиду обработчик для стандартных классов? Тогда конечно, просто я привык к билдеру\делфи: добавил компонент и заполняешь его обработчик, который надо. А в as3 так невозможно.
Последний раз редактировалось TommyLee; 10.11.2009 в 11:35. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
обработчик не для классов, а для событий. в дельфи ( и в ас2) на каждое событие предопределена одна-единственная ф-ция обработчик) в ас3 единственное что надо добавить 1 строчку:
а дальше всё так-же. Причём если делаешь свой компонент, ничто не мешает сделать предопределенные ф-ции обработчики package { import flash.events.Event; import flash.events.EventDispatcher; /** * Кастомный компонент * @author k0t0vich */ public class CustomComponent extends EventDispatcher { // ф-ция обоработчик для переопределения public var onSomethingChange:Function; public function CustomComponent() { addEventListener(Event.CHANGE, onSomethingChange); } public function changeSmth() { dispatchEvent(new Event.CHANGE); } } }
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 10.11.2009 в 12:27. |
|
|||||
|
Цитата:
например for (var i:int = 0; i < eventCounts; ++i) { addEventListener("Событие" + i.toString(), someHandler); } )
__________________
я могу стать всем, если только захочу |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:34. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|