Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.04.2018, 11:07
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 11  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Что значит, в слушателе кадра? Какой кадр имеется в виду?
Событие Event.ENTER_FRAME.
__________________
Reality.getBounds(this);

Старый 16.04.2018, 15:39
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 12  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Прочитал про ENTER_FRAME. Правильно я понял, что событие типа ENTER_FRAME выполняется при каждой смене кадра приложения?

А слушаем мы тогда что, на что addEventListener вешать? На сам анимируемый объект? С таймером-то мы слушали сам таймер.
__________________
Не сломано - не чини!

Старый 16.04.2018, 16:03
RedHead90 вне форума Посмотреть профиль Отправить личное сообщение для RedHead90 Найти все сообщения от RedHead90
  № 13  
Ответить с цитированием
RedHead90

Регистрация: Apr 2018
Сообщений: 42
Данное событие отправляют все экранные объекты, не зависимо от того, добавлены они в список отображения или нет. Слушать можешь любой из них, но оптимальнее всего будет повесить единственный обработчик на объект Stage и в нем уже определять, какие компоненты нуждаются в обновлении и т.д. и вызывать соответствующие методы. Т.е. у тебя получиться такой метод, который управляет жизненным циклом твоей флехи. Плюс, т.к. твоя анимация зависит от времени, тебе надо будет считать время между кадрами. Тут тебе поможет метод flash.utils.getTimer()

Старый 16.04.2018, 22:04
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 14  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Правильно я понял, что событие типа ENTER_FRAME выполняется при каждой смене кадра приложения?
Это глобальное событие, инициатором которого является сам плеер. Оно отправляется сразу после того, как "предыдущий кадр" был визуализирован рендером и, соответственно, прямо перед тем как плеер начинает собирать данные для визуализации нового кадра — то есть исполнять код обработчиков событий, выстроившихся в очередь за время последнего рендера. Выполнив весь этот код (рассчитав новые свойства объектов), плеер отправляет еще одно событие — Event.EXIT_FRAME. Если на это событие есть подписки обработчиков, они будут выполнены тут же, и только потом за дело возьмется рендер изображения.

(для расширения кругозора)
Если в коде кадра был вызван метод Stage#invalidate(), то прямо перед рендером будет отправлено событие Event.RENDER, по которому так же можно сделать окончательные перерасчеты свойств визуальных объектов. Этот метод называется "отложенная валидация" и используется, если какие-то свойства объекта могут несколько раз измениться во время исполнении кода одного кадра, а их изменение сопровождается сложными и долгими рассчетами (или изменением свойств детей, которых может быть несколько десятков) — которые оказываются бессмысленными и "холостыми", если через две наносекунды потребуется задать новое значение свойства. В частности, за время одного кадра может быть накоплено несколько событий MOUSE_MOVE или RESIZE, если какой-то шумахер нервно дергает мышью, и на каждое событие надо пересчитать размеры и положения всех визуальных компонентов в окне — а ОТОБРАЖЕНО рендером все-равно будет только последнее изменение. В таком случае объект "накапливает" задачи, не исполняя их, пока не получит событие RENDER. То есть тупо записывает себе _width = newWidth, и только в обработчике события RENDER делает непосредственно this.width = _width и требует ресайза от своих детишек.
__________________
Reality.getBounds(this);

Старый 17.04.2018, 08:45
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 15  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Еще стоит предостеречь от частой ошибки новичков - вешать слушатель enterFrame на каждый displayObject на сцене и потом удивляться почему все тормозит.

Старый 17.04.2018, 10:03
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 16  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
undefined, своевременно Я как раз собирался туда его и повесить. Всё-таки, куда сам слушатель зафигачивать? Про stage вроде решили, что давать ссылки на него каждому малышу не дело. Что остаётся? Какие-то более крупные контейнеры на сцене?
__________________
Не сломано - не чини!

Старый 17.04.2018, 10:17
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 17  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
вешать на общий контейнер приложения.Контейнер потом вызывает методы update у детей.Конечно, если надо проиграть какую-то анимацию, о которой родителям знать необязательно,то можно и внутри дитя слушать enterFrame.Главное контролировать число этих слушателей и не делать ничего тяжелого в них.
Цитата:
Про stage вроде решили, что давать ссылки на него каждому малышу не дело.
Ээ она уже у него есть.Как и ссылка на родителя.Это не очень сочетается с мантрой "дети не должны ничего знать о родителях", но местами это очень удобно.

Старый 17.04.2018, 12:32
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 18  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Это не очень сочетается с мантрой
Весь Display List полностью противоречит принципам ООП, на которых базируется язык AS3.
Похоже, их создавали в разных Вселенных "программистов" и "дизайнеров".
Я уже не раз приводил в пример, что через отношения DL stage/root/parent/child можно свободно получить ссылку на любой (дисплейный) объект, как бы вы ни прятали его в приватные свойства.
Добавил в Дисплей Лист == выставил на панель.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.