JavaFX setTranslate() против setLayout()

Я заметил, что для камеры перспективы и трехмерных фигур setTranslate() можно использовать по оси Z. Значит ли это, что мы используем этот метод для управления трехмерными плоскостями, а setLayout() для двухмерных плоскостей?

Кажется, что оба перемещают координаты моих объектов в трехмерной плоскости, так есть ли причина не использовать их взаимозаменяемо (кроме того, что это, возможно, плохая практика)?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Свойства макета и свойства Translate имеют разное применение и назначение, хотя оба они используются для позиционирования узлов. Их можно использовать по отдельности или, иногда, вместе.

Перевести свойства

Свойства перевода обычно используются для:

  1. Анимация узлов для эффектов, которые временно перемещают узел без изменения положения макета или поведения родительского элемента макета.

ИЛИ

  1. Позиционирование узла в Группе.

На translateX есть свойства translateY, translateZ и Node. Таким образом, свойства перевода можно использовать для перевода узлов как в 2D, так и в 3D пространстве.

Свойства макета

Свойства макета обычно используются для:

  1. Узлы позиционирования на панелях макета, которые работают с абсолютным позиционированием (например, Pane или AnchorPane) или неуправляемы.

ИЛИ

  1. Пользовательская панель, которую вы создаете самостоятельно, переопределяя LayoutChildren и настраивая расположение дочерних узлов в макете с помощью setLayout.

Если вы используете 2D-панель макета, которая управляет макетом своих дочерних элементов (например, StackPane, HBox, VBox), то обычно вы не устанавливаете значения макета явно в своем коде. Вместо этого вы позволите панели макета управлять макетом и устанавливать значения макета.

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

Для Node нет свойства LayoutZ, есть только layoutX и layoutY. Поэтому определение менеджера 3D-компоновки для размещения узлов в 3D-пространстве не поддерживается.

Использование в 2D и 3D работе.

В 3D-работе все узлы обычно помещаются в группу и позиционируются с использованием перемещения, а не макета.

В 2D-работе узлы обычно размещаются на панелях макета, которые будут управлять макетом без необходимости корректировки значения перемещения. Но перевод все равно может использоваться в некоторых приложениях, например, при работе с анимацией. Например, выполнение эффекта отскока в элементе управления типа док-станции Mac. Значок активированного приложения подпрыгивает вверх и вниз, но расположение других значков в панели управления док-станцией не меняется. После завершения эффекта отскока значок активированного приложения возвращается в исходное положение в доке.

Значения перевода не влияют на значения макета для узла, а панели макета не учитывают их при расчете положения макета для узлов, которыми они управляют, поэтому эффект отскока с использованием перевода не повлияет на макет любого другого одноуровневые узлы на панели и узел, подвергающийся эффекту анимации, вернутся в исходное положение макета, как только значения перевода вернутся к нулю.

В 2D-работе компоновка и перемещение могут использоваться независимо или вместе, поскольку окончательное положение узла рассчитывается как компоновка + перемещение.

Вы по-прежнему можете использовать макет в 3D, хотя это будет менее распространено. Вы можете использовать его для размещения узлов на 2D-поверхности, положение которой перемещается в 3D. Например, если вы реализуете пользовательский интерфейс 3D VR и хотите показать пользователю диалоговое окно с информационным текстом и кнопками «Подтвердить» и «Отмена», вы можете разместить диалоговое окно в 2D на панели макета, а затем поместить диалоговое окно в группу. и найдите его в трехмерном пространстве с помощью перевода.

Понятия, связанные с данным: переходы, преобразования и камеры.

Анимации перехода, такие как TranslateTransition и PathTransition, работают путем изменения значений перевода, а не значений макета, поэтому их можно использовать как в 2D, так и в 3D.

Такие преобразования, как Перевести и Повернуть , также можно использовать как в 2D, так и в 3D. Преобразования применяются независимо от свойств перевода и макета, при этом алгоритм, описанный в документации узла, следующий:

  1. Макет (layoutX, LayoutY) и перевод (translateX, TranslateY, TranslateZ)
  2. Поворот (поворот)
  3. Масштаб (масштабX, масштабY, масштабZ)
  4. Список преобразований (преобразований), начиная с элемента 0

Камеры, такие как PerspectiveCamera, являются узлами, но к ним имеет смысл применять только перемещения, повороты и преобразования, а не макет.

Другие вопросы по теме