Показать сообщение отдельно
Старый 07.12.2012, 21:15
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 25  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Из описания Event.RENDER
Цитата:
Отправляется перед обновлением и визуализацией списка отображения. Это событие дает последнюю возможность объектам, прослушивающим данное событие, внести изменения перед визуализацией списка отображения
Просто так оно не отправляется. Для того, что оно отправилось, нужно сделать stage.invalidate ()

Схема такая:
1. Идет рассылка событий типа клика мыши или нажатия клавиши
2. Идет рассылка события Event.ENTER_FRAME
3. Идет рассылка события Event.EXIT_FRAME
4. Идет рассылка события загрузки, типа Event.INIT, Event.OPEN, Event.COMPLETE и тп.
5. Идет рассылка события Event.RENDER, если в любом из этапов 1-4 был вызван stage.invalidate ()
6. Плеер выводит графику.

Допустим у нас есть спрайт с нарисованным квадратом 100 на 100, у которого переопределен width.
Когда мы его меняем на этапе 1-4, допустим на 200, то сохраняем его значение в _width и вызваем stage.invalidate ().
Если после этого, кто-то обратится к свойству width, то он вернет значение _width, то есть 200.
Когда все события разосланы и плеер собирается отрисовать графику, рассылается последнее событие Event.RENDER, которые вызывает наш redraw, где мы что-то делаем. Допустим стираем graphics и рисуем новый прямоугольник, но с шириной равной _width.
__________________
(и)Нильс.ru | Плагины для FlashDevelop