2009-08-24 3 views
0

일부 스프라이트 응용 프로그램 (즉, pulpcore)을 사용하면 객체의 기준점을 정의 할 수 있습니다.JavaFX 노드의 x, y 앵커 포인트

예를 들어 직사각형의 기준점이 0,0이고 좌표가 x:0,y:0 인 경우 사각형의 왼쪽 상단이 화면의 왼쪽 상단에 표시됩니다. 직사각형의 앵커 포인트가 50,50이며, 그것의 크기는 100x100입니다 그러나, 사각형의 중간 0,0에 배치 될 만은 오른쪽 아래 부분이 표시 될 수 있다면

.

JavaFX와 비슷한 속성이 있습니까? 이것을 구현하는 쉬운 방법이 있습니까 (xy 좌표를 JavaFX 노드의 높이와 너비에 바인딩 할 수 있습니까?)?

x,y 좌표를 boundsInLocal/Parent.width에 바인딩하면 런타임 예외가 발생합니다.

답변

2

사각형의 원점은 사용자가 말한대로 왼쪽 상단에 있습니다. 노드 배치를위한 두 가지 옵션이 있습니다. layoutX와 layoutY를 사용할 수 있습니다. VAR의 RECT = 직사각형 { layoutX 50 layoutY 50 widht 100 신장 100 }

또는 translateX 및 translate Y를

VAR의 RECT = 직사각형 { translateX 50 translate Y를 50 layoutX/Y와 translateX/Y를 모두 사용하는 주요 목적은 translateX/Y가 변경 가능하도록하는 반면 layoutX/Y는 초기 위치 지정을위한 것입니다. 예를 들어 원래 위치가 layoutX/Y에 저장되어있는 동안 애니메이션에서 translateX/Y를 변경할 수 있습니다. 궁극적 인 위치는 항상 layoutX + translateX 및 layoutY + translateY입니다.

원점을 중심점 (50,50)으로 이동하려면 음수 변환을 사용하십시오. var에 RECT = 사각형 { translateX : -50 translate Y를 : -50 widht : 100 높이 : 100 은}

는 어떤 모양이 왼쪽 기원 기반으로하지 않습니다. 예를 들어 Circle은 centerX와 centerY를 사용합니다.

+0

충분하지 않습니다. X, Y를 현재 노드의 너비에 바인딩하고 싶습니다. –

+0

이렇게 할 수 있습니다 : var rect : Rectangle = Rectangle {x : bind rect.width y : bind rect.height}; 또는 바람직하게는 var rect : Rectangle = Rectangle {layoutX : bind rect.width layoutY : bind rect.height}; – JimClarke

+0

죄송합니다, x와 y가 Node에서 제거되었습니다. layoutX/Y 또는 translateX/Y를 사용해야합니다. 그래서 Rectangle {layoutX : bind rect.layoutBounds.width}를 할 수 있습니다. – JimClarke

관련 문제