Вопрос: Будет сейчас вращаться? — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Вопрос: Будет сейчас вращаться?

2022-10-10 50
Вопрос: Будет сейчас вращаться? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: По-моему нет скорее всего. Дело в том, что здесь нужно дать отмашку. А отмашку можно в кнопочку поставить. Нажимаешь на кнопочку и пошла отмашка. Так! Где у меня кнопочка? Вот она. А ладно… Тут сложновато. Тут по-человечески надо выносить имена переменных. Если захотите дома сами сделаете. Мы сделаем попроще.

Вся проблема во всех этих готовых классах следующая. Мы приходим и нам говорят: «вот такие есть анимации». Представьте себе, что ни одна анимация пользователю или дизайнеру не понравилась. Не важно. Короче, кому-то не понравилась. Вот у нас есть например вариант с движением Translate. Будет двигаться. А вот хочется, чтобы она начала резко двигаться, а потом двигалась плавно с определенной скоростью и притормаживала культурно. Понимаете, да? Вы зададите диапазон по времени 3 секунды и как она будет делать эту анимацию? Я хочу чтобы было ускорение и замедление. Есть тут такое? Естественно нет. А как это сделать? Вы знаете? Надо наследовать от какого-то их суперкласса (скорее всего Transition) и при наследовании задать свою бизнес-логику изменений. ПишуAnimationtrans = newTransition, потомCtrl+Пробел, нажимаюEnter, потомещеразEnter. Это абстрактный класс. Поэтому среда понимает, что абстрактный класс, но создать объект будет сложно. И поэтому она сама создает анонимный класс, в котором переопределить нужно всего один метод: interpolate.

Кстати, там были конструкторы с параметрами. Зря мы их пропустили, чтобы node можно было создать или время можно было бы задать. Здесь конечно можно сделать все настройками. Но с конструктором с параметрами было бы проще. Важно, что когда этот объект создается, то у этого объекта уже есть на каком узле он должен отрабатывать. И когда кто-то даст отмашку и вызовет для этого объекта trans.play(), он должен отработать то, что было запрограммировано, а здесь будет отрабатываться, то, что вы напишите в методе interpolate. Соответственно, допустим вы скажете, что надо выполнять за 3 секунды то, что мы хотим. И вам будут вызывать метод interpolate в течение 3 секунд с определенной частотой. На каком месте вы находитесь внутри этого диапазона от 0 до 3 секунд и определяет wf. Оно будет меняться от 0 до 3. Это и есть этот временной момент. И в зависимости от того, начало это или окончание, вы с разной скоростью будете что-то делать.

Открою фигурные скобки и закрою их. Помните такую штуковину в Java? Это блок инициализации. По хорошему, надо было бы написать свой собственный класс. У него был бы конструктор. В конструкторе вы бы написали любую инициализацию. А здесь в анонимном классе куда писать инициализацию? У него даже конструктора нет. Поэтому здесь есть такая штука, как блок инициализации. Он отрабатывает один раз в момент создания объекта. Ну это для объекта вызывается, поэтому я вызываю thisи надо все настроить, чтобы все было понятно для кого именно. Пишем setCycleDuration – это сколько времени занимает. Т.е. у нас это будет продолжаться 3 секунды. Не вопрос. А внутри interpolateделаете вообще все, что захотите.

Timeline Animation

Представьте себе, что у вас действительно много разных действий. А еще представьте, что они должны быть синхронизированы и под музыку - тогда TimelineAnimation.

Потому что здесь время задается и каждый шаг этого действа он расписан. И это все можно красиво синхронизировать с каким-то звуковым сопровождением. Конечно же, как тут быть без дизайнера - я не понимаю. Как к этому можно подступиться. Идеально выглядит создание TimeLineанимации в визуальных средствах. Важно, что это удобно генерировать. Когда я рассказывал, что я брал интерфейс, который собирался в «точку» и исчезал – это как раз была TimeLineанимация. Здесь мы откроем Пример №5. Там есть этот TimeLineанимация. Конечно, у меня, кроме как, движения квадратиков по экрану, ничего я больше осилить не смог. Если у вас будет время и желание, то сделайте вместо квадратиков паровозик.

Итак, «Открыть проект» ->JavaFX ->«Пример 5»

Давайте вначале глянем на него.

Итак, здесь кликаешь по кнопке. Там пишется какая-то ерунда. А потом идет такой setOnAction:

В лямбда-выражение можно положить сколько хочешь кода. Здесь вы можете увидеть выражение на 20 строчек кода. Это не принципиально для лямбда-выражения. Обычный получается функция. Так вот! Смотрите. Здесь создается объект TimeLine. Настройки вы видели. Они примерно одинаковы.Но самое важное, что в него входит такое понятие, как «KeyFrame». Создается KeyFrameв котором говорится: «сколько нужно делать по времени?». И создается KeyValue в котором говорится «что нужно делать?».

Вот эта строчка говорит: «у какого-то объекта rectсдвигается на x».

А потом он сдвигается на 50 за 1 секунду по оси x.

Потом он сдвигается на 250 за 2 секунды.

 

А вот этот квадратик у меня еще поворачивается. Единственное, что я с этим квадратиком сделал – это 3DBox, и поставил ему какую-то странную ось для поворота. Поэтому когда он поворачивается, то видно, что он трехмерный. После того, как вы создали каждый объект KeyFrame, они добавляются в коллекцию TimeLine. Вот они строятся: времена и зависимости. Одна команда Playи все поехало. Это самое стандартное создание (на сегодняшний день) таких сложной анимации в интерфейсе, которые состоят из разных действий. Лучше это делать в дизайнере.


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.