Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как лучше всего реализовать бесконечное движение, например по кругу? (http://www.flasher.ru/forum/showthread.php?t=183131)

MINASTIS 13.08.2012 04:02

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

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

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

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

caseyryan 13.08.2012 07:07

Цитата:

как залупить это дело у каждой окружности?
:D хорошо сказано...

Цитата:

Есть вариант к каждой добавить листенер по созданию что включает функцию движения, приклеенную к ENTER_FRAME, но не нагрузит ли это флешку?
По возможности нужно добавлять не более одного такого слушателя на всю программу.
В классе каждого кружка сделать функцию update() которую вызывать в цикле для кадой окружности в обработчике enterFrame. Естественно, поместив все объекты "окружности" предварительно в массив.
что-то типа:
Код AS3:

private function onEnterFrame(e:Event):void {
    for each (var circle:Circle in _circles) {
          circle.update();
    }
}

А уже по вызыву этой функции просчитывать движение.

Цитата:

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

MINASTIS 13.08.2012 15:18

Спасибо за ответ! :)
Вызов функции через ENTER_FRAME потребляет меньше ресурсов системы?

pas.delger 13.08.2012 15:33

для плавности можно покопать в сторону updateAfterEvent и использовать таймер

i.o. 13.08.2012 15:35

x = radius * Math.cos(a + time);
y = radius * Math.sin(a + time);

MINASTIS 13.08.2012 17:02

i.o., примерно такой код и написан :)

caseyryan 13.08.2012 17:34

Цитата:

Сообщение от pas.delger (Сообщение 1092072)
для плавности можно покопать в сторону updateAfterEvent и использовать таймер

updateAfterEvent() вызывает принудительную перерисовку всего контента в окне плеера, что плохо сказывается на производительности


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

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