Форум 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=199708)

zzSpirit 23.05.2013 00:26

алгоритм програмной анимации
 
Здравствуйте, хочу сделать так:
Машинка должна ехать вверх, то останавливаясь, то опять начиная движение. Также она поворачивает влево и вправо до определенных границ. Но... Это должно выполняться по специально сгенерированному коду, типа:
12593029832423490109483434567
планирую брать такую строку и разделять ее по 2 числа- и чтобы каждая строка значила на сколько процентов переместимся(100% перемещение - это весь пройденный путь). Но тут не учитывается еще и анимация поворотов вправо и влево и вообще алгоритм не очень нравится, первый до которого я додумался.
Кто может еще какие алгоритмы в теории предложить? Мне нужно чтобы анимация записывалась в строку и могла воспроизводиться по этой строке.

ProcXel.A 23.05.2013 00:44

Самый простой алгоритм - это в каждом кадре записывать координы и угол поворота. А потом всё это воспроизводить покадрово.

КорДум 23.05.2013 00:48

И важно, чтобы это была строка исключительно из цифр? Как насчет JSON?
Что-то типа
[ {"progress":10, "angle":-90}, {"progress":20, "angle":-20}, { ... } ]

GBee 23.05.2013 00:55

Я так понимаю автор хочет минимизировать строку для передачи по сети или записи игры? Для начала вам надо действительно определится по каким параметрам будете определять положение машинки в пространстве в какой-либо момент времени. А сжать все это в строку потом уже дело техники и фантазии.

C4Grey 23.05.2013 00:58

Есть отличное решение от GreenSock: http://www.greensock.com/timelinelite/ И продвинутый вариант(хотя в этом случае он не нужен): http://www.greensock.com/timelinemax/ . Создаешь узлы анимации, задаешь для них знчения угла поворота и координаты, расчитываешь время участков. Можно время считать по формулам из раздела динамики, можно эмпирически, например, зная постоянную скорость машины и расстояние между точками по прямой, легко узнать время движения, а при необходимости поворота это время можно просто уменьшать на некую величину, пропорциональную углу поворта(упрощение формулы траектории движения тела с учетом угловой скорости). Можно даже редактор для этого всего написать, с красивым расчетом траекторий на сплайнах(кстати, TweenMax их поддерживает) :)

zzSpirit 23.05.2013 15:35

Цитата:

Сообщение от КорДум (Сообщение 1134418)
И важно, чтобы это была строка исключительно из цифр? Как насчет JSON?
Что-то типа
[ {"progress":10, "angle":-90}, {"progress":20, "angle":-20}, { ... } ]

можно и так, но в таком случае слишком длинно получится.

Добавлено через 6 минут
GBee, Почти правильно. Я хочу создавать уникальную анимацию(она всегда должна быть разной) и записывать ее в код, который я передаю по сети и на другом флеш-плеере должно воспроизводиться то же самое.
Задача чуть сложнее чем я описал, пока не придумал как сделать, но вот полное описание что я хочу сделать чтобы было понятнее:

Сама анимация покадровая, но записываться она будет с периодичностью 3 секунды, например.
Т.е. есть таймер, который работает каждые 3 секунды. Он сработал и машинке дана команда - вперед и немного вправо, но вправо дальше 100 пикселей к примеру заезжать нельзя. Причем эта машинка имеет свои характеристики(вес, мощность, кол-во топлива, что еще можно учитывать?) От них анимация тоже зависит. Слишком много всего учесть надо, даже и не знаю с чего начать.

Добавлено через 9 минут
ProcXel.A, мне нужно не в каждом кадре, а скорее всего по таймеру, причем время срабатывания таймера всегда рандомное, предположим от 3000 до 6000.

Добавлено через 11 минут
C4Grey, не хочется использовать чужие готовые системы, хочется свой оч простой для начала распознаватель кода, в который записана анимация.

ProcXel.A 23.05.2013 16:44

Цитата:

Слишком много всего учесть надо, даже и не знаю с чего начать.
Раз уж ты сам не знаешь, что именно тебе нужно, то никто другой тем более не знает, что тебе нужно. :) Для начала возьми листок и ручку. И напиши по пунктам, что именно сохранять в строку анимации и как эту строку потом воспроизводить. И тогда алгоритм сам появится. :)

КорДум 23.05.2013 17:05

Цитата:

можно и так, но в таком случае слишком длинно получится.
Если хочется минимизировать траффик, посмотрите в сторону бинарных протоколов. Мой JSON-пример можно сериализовать в голые байты без поясняющих ключей с четко сохраненной структурой следования каждого параметра. В результате чего, читая по байтам в определенном промежутке, можно правильно считать последовательность действий.
Другими словами, получится то же самое, что было в ТС-посте, с единственным различием, что теперь у нас байты, сообщение строго ограничено по длине, имеет четко заложенную последовательность параметров, которые могут быть байтом, шортом и интом - 1, 2 и 4 байта соответственно.


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

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