|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Прочитал про ENTER_FRAME. Правильно я понял, что событие типа ENTER_FRAME выполняется при каждой смене кадра приложения?
А слушаем мы тогда что, на что addEventListener вешать? На сам анимируемый объект? С таймером-то мы слушали сам таймер.
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Apr 2018
Сообщений: 42
|
Данное событие отправляют все экранные объекты, не зависимо от того, добавлены они в список отображения или нет. Слушать можешь любой из них, но оптимальнее всего будет повесить единственный обработчик на объект Stage и в нем уже определять, какие компоненты нуждаются в обновлении и т.д. и вызывать соответствующие методы. Т.е. у тебя получиться такой метод, который управляет жизненным циклом твоей флехи. Плюс, т.к. твоя анимация зависит от времени, тебе надо будет считать время между кадрами. Тут тебе поможет метод flash.utils.getTimer()
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
(для расширения кругозора) Если в коде кадра был вызван метод Stage#invalidate(), то прямо перед рендером будет отправлено событие Event.RENDER, по которому так же можно сделать окончательные перерасчеты свойств визуальных объектов. Этот метод называется "отложенная валидация" и используется, если какие-то свойства объекта могут несколько раз измениться во время исполнении кода одного кадра, а их изменение сопровождается сложными и долгими рассчетами (или изменением свойств детей, которых может быть несколько десятков) — которые оказываются бессмысленными и "холостыми", если через две наносекунды потребуется задать новое значение свойства. В частности, за время одного кадра может быть накоплено несколько событий MOUSE_MOVE или RESIZE, если какой-то шумахер нервно дергает мышью, и на каждое событие надо пересчитать размеры и положения всех визуальных компонентов в окне — а ОТОБРАЖЕНО рендером все-равно будет только последнее изменение. В таком случае объект "накапливает" задачи, не исполняя их, пока не получит событие RENDER. То есть тупо записывает себе _width = newWidth, и только в обработчике события RENDER делает непосредственно this.width = _width и требует ресайза от своих детишек.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Еще стоит предостеречь от частой ошибки новичков - вешать слушатель enterFrame на каждый displayObject на сцене и потом удивляться почему все тормозит.
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
undefined, своевременно Я как раз собирался туда его и повесить. Всё-таки, куда сам слушатель зафигачивать? Про stage вроде решили, что давать ссылки на него каждому малышу не дело. Что остаётся? Какие-то более крупные контейнеры на сцене?
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
вешать на общий контейнер приложения.Контейнер потом вызывает методы update у детей.Конечно, если надо проиграть какую-то анимацию, о которой родителям знать необязательно,то можно и внутри дитя слушать enterFrame.Главное контролировать число этих слушателей и не делать ничего тяжелого в них.
Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Похоже, их создавали в разных Вселенных "программистов" и "дизайнеров". Я уже не раз приводил в пример, что через отношения DL stage/root/parent/child можно свободно получить ссылку на любой (дисплейный) объект, как бы вы ни прятали его в приватные свойства. Добавил в Дисплей Лист == выставил на панель.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 09:43. |
|
« Предыдущая тема | Следующая тема » |
|
|