Класс Path / Делаем модные волны
1,2,3

Хотим добиться вот такого поведения:
Почему именно такого? Потому, что волны должны быть легко управляемы.
Если захочется подрагать волны - на здоровье. После того, как наиграетесь, поиграйте еще раз, но уже с умом, посмотрите, как ведет себя волна в зависимости от ваших действий. Подумайте, как вы можете эти действия выразить в виде программы.
А пока разберем как мы дожили до жизни такой.

8. Переделываем волны.
Просто берем самый первый FLA и переделываем его.
Во-первых переделываем класс контрольных точек под наши нужды. Мувик делаем компонентом, раздаем номера мувикам на сцене в пропертях компонента, чтобы они смогли узнать кто их соседи.
Во-вторых меняем отрисовку линии: узловые точки вычисляем (они будут посередине между мувиками), а все наши мувики кроме крайних становятся контролами и заодно их прячем.
Точек делаем больше.
В итоге получаем такой FLA и забавную веревочку:

балуемся, драгаем.

9. Воним голну
Поэкспериментируем с поведением крайних точек. Зададим рандомное поведение для них и посмотрим, что из этого вышло:
Не совсем то, что нужно, но это не помешает нам изучить FLA и перейти к следующему пункту плана:

10. Навешиваем кораблик
Я притащил готовый кораблик из флашки на прошлой странице и воткнул в рут. На этом переделки не закончились: в том месте, где отрисовка, я добавил собирание точек в массив path_array. А этот массив я отдаю на съедение методу getPoint класса Path в кораблике. Это наглядно демонстрирует, что этотому методу по-барабану что пользовать: и набор точек, и готовый массив для него вполне удобоваримы. Смотрим FLA, балуемся с корабликом:
Но что-то такие волны конкретно обламывают, потому, как нифига на волны не похожи.

11. На гребне волны
Теперь, для того, чтобы волны стали похожими не нужно особо заморачиваться. Впрочем, смею утверждать, что приведенное в этом FLA решение далеко не единственное, и далеко не лучшее. При наличии желания и времени для экспериментов можно легко обсчитать не только правильное поведение волн, но и обсчитать рефракции света на глубину 17-18 отражений и в итоге добиться потрясающего реализма, такого, что 3-ды-мах отдыхает. Но, к счастью, это не входит в задачу данного урока. Задача данного урока показать как просто используя класс Path решать казалось бы невозможные задачи.
На этом почти всё.

Для фанатов AS1 я приготовил подарочек: класс Path в AS1 реализации (он в кружочке запрятан). Кстати, когда убрал скрытие мувиков, обнаружил, что тоже весьма мило получается, к тому же можно драгать за любой из них:

Подводим итоги:

Если возник вопрос типа : "Покажите мне того придурка, которому этот кораблик нужен.", то
не ходите больше никогда на этот сайт. Если до сих пор не дошло, какие возможности открываются с помощью Path, то и мне объяснить будет сложно.
Впрочем, могу попробовать дать направление ходу мыслей:
- можно "нарисовать" изменение скорости во времени и считывать данные скорости через Path. В смысле разнообразия возможных вариантов графиков скорости объекта, многие известные инструменты просто отдыхают.
- можно нарисовать путь и двигать объект не строго по пути, а вносить по ходу дела коэффициенты, зависящие от действий пользователя.
- можно просто заюзать в баннере, чтобы уменьшить вес ролика, в котором много анимации MotionTween.
- придумай сам еще что-нибудь.

Как купить?
И после этого фантастического, потрясающего рассказа вы еще не купили мой Path класс?
- Ну и правильно. Нефига его покупать. Он халявный. Живет тут: Path.as

и еще один примерчик использования Path

а здесь не про Path, а просто в развитие темы неровных. Или как там их... эта...
А! Кривых. Вот.


2004. Ivan Dembicki (aka Iv).
или по-русски:
2004. Иван Дембицкий (известный также по ником Ив)