logo
Последняя версия шпор по СТП

10. Иерархия классов событий и способы обработки события в Action Script

Под основными событиями я понимаю те, которые мы наиболее часто используем в разработке наших Flash приложений, игр и, иногда даже, баннеров. Перечислим их: 1. onPress — событие, которое срабатывает при нажатии на клип; 2. onRelease — нажали на клип мышкой и отпустили. Схоже с onPress, но на мой взгляд, более удобно, что ли. Заметьте, все стандартные кнопки в Windows срабатывают именно на это событие, а не на просто «нажал». onRelease так же даёт пользователю «шанс» отказаться от нажатия, если он, допустим, нажал и понял, что не хочет нажимать =) На практике, на самом деле, встречается очень часто. Чтобы не нажимать, человеку всего-то и нужно увести курсор с объекта и отпустить зажатую кнопку мыши там; 3. onReleaseOutside — как раз то самое событие «нажал-и-отпустил-за-пределами-клипа», которое я описывал чуть выше; 4. onRollOver — навести курсором на объект; 5. onRollOut — убрать курсор мышки с объекта; 6. onEnterFrame — событие, которое срабатывает каждый раз при смене кадра в вашей флешке. Если быть точнее, то происходит это один раз в интервал времени равный смене кадра. Допустим, если FPS вашей флешки равен 30, то это событие будет происходить 30 раз в секунду. Создание событий разберём на примере onRollOver: obj_mc.onRollOver = function(){ this._alpha=50; } 1. obj_mc — это объект для которого мы создаём событие; 2. onRollOver — название события. Вместо него могло бы стоять onRelease, onPress или другие; 3. function(){ this._alpha=50; } — действия, которые будут происходить при наступлении данного события. В частности у нас, объект, на который мы наведём курсором мыши, станет наполовину прозрачным. Задавать действия можно не только таким способом. Например, если у нас есть функция, вызов которой нужно производить по нажатию, то код будет следующим: obj_mc.onPress = name_function(); Где name_function() — это имя функции, которую нужно будет выполнить. Так же бывают случаи, когда одни и те же действия выполняются для двух или более событий. Что мы делаем в этом случае? Мы делаем следующее: obj_mc.onRollOut = obj_mc.onReleaseOutside = function(){ this._alpha=100 }; Удаляем события Иногда бывает так, что созданное событие требуется отлавливать не бесконечное количество раз, а только определённый период. delete obj_mc.onRollOver;

Общая схема обработки события: element.addEventListener(MouseEvent.CLICK, eventListener); function eventListener(e:MouseEvent):void{/*действия*/} Типы событий DisplayObject Event.ADDED - конкретный экземпляр DisplayObject, который был добавлен в список отображения Event.RENDER - Отправляется перед обновлением и визуализацией списка отображения Event.REMOVED Event.ENTER_FRAME Event.EXIT_FRAME (события для интерактивных объектов) FocusEvent.FOCUS_IN (OUT) KeyboardEvent.KEY_DOWN (UP)