Точка привязки x, y в узлах JavaFX - PullRequest
0 голосов
/ 24 августа 2009

Некоторые приложения для спрайтов (а именно pulpcore ) позволяют вам определять опорную точку для объекта.

Например, если точка привязки прямоугольника 0,0, а его координаты x:0,y:0, верхняя левая точка прямоугольника будет отображаться в верхней левой точке экрана.

Если, однако, точка привязки прямоугольника равна 50,50, а ее размер равен 100x100, середина прямоугольника будет помещена в 0,0, и будет отображаться только его нижняя правая часть.

Есть ли подобное свойство в JavaFX? Есть ли простой способ реализовать это (можете ли вы связать x и y координаты узла JavaFX с его собственной высотой и шириной?)?

Когда я связываю x,y координаты с boundsInLocal/Parent.width, я получаю исключение времени выполнения.

1 Ответ

2 голосов
/ 25 августа 2009

Происхождение прямоугольника находится слева вверху, как вы говорите. У вас есть 2 варианта позиционирования узла. Вы можете использовать layoutX и layoutY. var rect = Rectangle { layoutX: 50 layoutY: 50 ширина: 100 высота: 100 }

или перевести X и перевести Y

var rect = Rectangle { translateX: 50 перевод: 50 ширина: 100 высота: 100 } Основная цель использования обоих layoutX / Y и translateX / Y заключается в том, что translateX / Y предназначен для изменения, тогда как layoutX / Y предназначен для начального позиционирования. Например, вы можете изменить translateX / Y в анимации, когда исходная позиция запоминается в layoutX / Y. Конечным местоположением всегда будет layoutX + translateX и layoutY + translateY.

Чтобы переместить начало координат в центральную точку (50,50), используйте отрицательный перевод. var rect = Rectangle { translateX: -50 перевод: -50 ширина: 100 высота: 100 }

Некоторые фигуры не основаны на верхнем левом происхождении. Например, Circle использует centerX и centerY.

...