Flash-элементы

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Flash-элементы » Сами изучаем Flash » Кривые Безье. Использование во Flash


Кривые Безье. Использование во Flash

Сообщений 1 страница 21 из 21

1

Движение по кривой Безье

У меня вопрос к разработчикам.
Во flash приложении нужно запрограммировать движение объекта по плавной кривой. Конечно, это можно было бы сделать при помощи массива точек, но нужно, чтобы пользователь видел траектории движения и мог ее изменять в определенных пределах.
Я подумал, что может быть, проще это организовать при помощи использования кривых Безье?
Уважаемые разработчики, посоветуйте, как это лучше сделать. Необходимые подробности могу послать по ЛС.

0

2

studiotest, я не совсем понял проблему.
Движение по кривой Безье можно организовать очень просто с использованием готового класса Tweener.
Сами точки, определяющие кривую Безье можно сделать объектами с возможностью перетаскивания. Их новые координаты будут вставляться в качестве параметров для класса Tweener. Вот и все.
Если кривая определяется несколькими точками, то они перечисляются как указано ниже.

Код:
import caurina.transitions.Tweener;
Tweener.addTween(object, {x:obj.x, y:obj.y, _bezier:[{x1, y1},{ x2, y2}], time:1.0, transition:"linear"});

Отредактировано Damian (2014-03-25 20:52:59)

0

3

С движением по кривой Безье нет проблемы. Но надо, чтобы сама кривая, по которой движется объект, тоже была видна.
Разве нельзя нарисовать кривую движения с помощью стандартной функции "curveTo" класса Graphics? Ведь она вроде и рисует кривую Безье?

0

4

Естественно, можно. Но стандартная функция рисует только кривую Безье 2-го порядка. И если нужно нарисовать более сложную траекторию, то ее нужно набирать из отдельных сегментов кривых Безье 2-го порядка. В то время как в Tweener можно указать все точки в одном выражении. Если суммарная кривая гладкая (нет резких перегибов), то движение объекта с помощью Tweener максимально проходит по траектории, нарисованной с помощью стандартной функции "curveTo". Полное совпадение происходит когда опорная точка (синяя на графике) расположена точно на середине отрезка, соединяющего две направляющие точки (красные). Математически это означает, что производные слева и справа в данной точке равны.

http://s8.uploads.ru/t/Z04tF.jpg

Чтобы не быть голословным, мы подготовили небольшое интерактивное flash-приложение "Движение по кривой Безье" можно посмотреть на странице Учебные приложения.
Все точки кривой - опорные и направляющие - можно перемещать курсором мыши.

0

5

Вот забавная штука получилась. Я хоть ни черта не понимаю во всяких кривых Безье, а только слышал. Но выглядит здорово и движением можно управлять.

0

6

Damian, спасибо. Действительно, наглядная модель. Кажется, разобрался. Вот только еще к своему варианту нужно прикрутить.

0

7

Damian, так может сделать, чтобы опорная точка автоматически всегда сидела на середине отрезка между ключевыми точками. Чтобы не вводить народ в заблуждение. А то, двигая все объекты, это условие нарушается и движение идет не по нарисованной траектории.

0

8

Да не проблема. Конечно, подправим. Я и сам уже подумал, что надо сделать зависимыми положения опорных и направляющих точек, раз уж мы тут говорим о кривых Безье. И может еще для разнообразия ввести пару-тройку готовых специфических конфигураций точек, показательных для часто используемых движений.

0

9

В галерее обновлено flash-приложение с демонстрацией движения по кривой Безье с 5-ю направляющими точками.
При нажатии на кнопку "Конфигурация" меняются координаты точек. Две конфигурации предопределены, еще 18 определяются рандомно.
Можно тестировать и высказывать замечания.

0

10

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

0

11

Как раз в игрушках много всякого движения. Если только этим движением не управляет пользователь.
Это может быть хоть полет стрел, хоть ядра из пушки или полет самолета. Непонятно что тут затратного, поскольку параметры кривой Безье не представляют какой-то проблемы, если даже используется при движении множества объектов.
Еще кривые используются для плавного перехода от одного движения к другому, для улучшения визуализации.

0

12

В игрушках, конечно, много движений. Но иногда они выглядят очень хаотичными.

0

13

Scilla, хаотичность может быть реальной или кажущейся. Когда очень много объектов на сцене, то уследить, как двигается единичный объект, довольно трудно. Но все они, если управляются программно, то двигаются по каким-то заранее запрограммированным траекториям. А хаотичность тоже может быть запрограммирована для большей эффектности сюжета.
В физических движках или движках для работы с частицами, например, падение (или движение) программируется с имитацией гравитации и взавимодействий частиц друг с другом для большей реалистичности.

Отредактировано Damian (2014-04-06 14:36:23)

0

14

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

0

15

Макс, с текстом тоже можно все делать. И естественно, эффект смотрится интереснее, когда он использует отдельные символы. Весь текст, действительно, нет смысла двигать, если только это не задумано специально, например, появление блока пояснительного текста.
Вообще, разных текстовых эффектов во flash придумано довольно много. Один из самых старых - имитация печати на пишущей машинке. Это когда строка текста образуется за счет прилета символов с характерным звуком удара машинки.
Можно рассмотреть интересные текстовые эффекты в отдельной теме.

0

16

Меня тоже интересуют текстовые эффекты во flash. И если можно с примерами.

0

17

Про текстовых эффекты в инете можно найти много информации и она уже даже устарела. А вот узнать какие-нибудь новые фишки было бы интересно.

0

18

Modus, разработчики представили новый вариант Flash-приложения с демонстрацией текстового эффекта.
Мы решили поместить его в отдельную тему. Все интересующиеся могут посмотреть тему Текстовые эффекты во Flash.

0

19

А каким способом движением по кривой использовать в стороннем приложении?   Сразу компилировать его с нужным массивом точек не очень удобно. Хотелось бы иметь возможность их подгружать.

0

20

studiotest написал(а):

Хотелось бы иметь возможность их подгружать.

Так в чем проблема использования массива в качестве параметра. Задавайте параметр массив точек в экземпляре класса и он будет отрисовывать нужную кривую.

0

21

Наверное, можно сделать и просто функцию, чтобы не заморачиваться с классами.

0


Вы здесь » Flash-элементы » Сами изучаем Flash » Кривые Безье. Использование во Flash