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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.08.2012, 04:02
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 1  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
По умолчанию Как лучше всего реализовать бесконечное движение, например по кругу?

К примеру есть 5 окружностей, они созданы по "кругу" и двигаться буду вокруг этой оси. Вопрос, как залупить это дело у каждой окружности?
Есть вариант к каждой добавить листенер по созданию что включает функцию движения, приклеенную к ENTER_FRAME, но не нагрузит ли это флешку? Таких объектов штук 30 думаю минимум будет, вообще (считайте 6 кругов таких из 5 окружностей что по кругу двигаются).

Какой самый элегантный и оптимизированный вариант может быть?

Добавлено через 2 часа 26 минут
Кстати, флешу проще просчитывать движение собственно-нарисованной окружности или загруженной .png/.jpg картинки? Подумываю изображение окружности сделать, т.к. сейчас с ENTER_FRAME все работает, но рывки есть.
Я не знаю, эти рывки "сильного использования" процессора или просто рандомные рывки, их можно как-нибудь компенсировать? Может пропуск или дорисовка кадров как-нибудь? У меня фпс правда 60 стоит, но мне 60 и нравится из-за плавности кадров и программной анимации (если бы не рывки).

Может дело и правда в ENTER_FRAME и лучше пользоваться каким-нибудь интервалом?

Старый 13.08.2012, 07:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
как залупить это дело у каждой окружности?
хорошо сказано...

Цитата:
Есть вариант к каждой добавить листенер по созданию что включает функцию движения, приклеенную к ENTER_FRAME, но не нагрузит ли это флешку?
По возможности нужно добавлять не более одного такого слушателя на всю программу.
В классе каждого кружка сделать функцию update() которую вызывать в цикле для кадой окружности в обработчике enterFrame. Естественно, поместив все объекты "окружности" предварительно в массив.
что-то типа:
Код AS3:
private function onEnterFrame(e:Event):void {
     for each (var circle:Circle in _circles) {
           circle.update();
     }
}
А уже по вызыву этой функции просчитывать движение.

Цитата:
Кстати, флешу проще просчитывать движение собственно-нарисованной окружности или загруженной .png/.jpg картинки?
Растровую графику всегда просчитывать проще, чем векторную

Старый 13.08.2012, 15:18
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 3  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
Спасибо за ответ!
Вызов функции через ENTER_FRAME потребляет меньше ресурсов системы?

Старый 13.08.2012, 15:33
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 4  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
для плавности можно покопать в сторону updateAfterEvent и использовать таймер

Старый 13.08.2012, 15:35
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
x = radius * Math.cos(a + time);
y = radius * Math.sin(a + time);

Старый 13.08.2012, 17:02
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 6  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
i.o., примерно такой код и написан

Старый 13.08.2012, 17:34
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от pas.delger Посмотреть сообщение
для плавности можно покопать в сторону updateAfterEvent и использовать таймер
updateAfterEvent() вызывает принудительную перерисовку всего контента в окне плеера, что плохо сказывается на производительности

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

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

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


 


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


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