2009-08-24 62 views
0

某些sprite應用程序(即pulpcore)允許您爲對象定義錨點。JavaFX節點中x,y的錨點

例如,如果一個矩形的定位點是0,0並且它的座標是x:0,y:0矩形的左上角點將顯示在屏幕的左上角。

然而,如果矩形的定位點是50,50,它的尺寸爲100x100,矩形的中間將被放置在0,0只有它的右下側部分將被顯示。

JavaFX中是否有類似的屬性?有沒有簡單的方法來實現這個功能(你可以將JavaFX節點的xy座標綁定到它自己的高度和寬度嗎?)?

當我將x,y座標綁定到boundsInLocal/Parent.width時,我得到一個運行時異常。

回答

2

如您所說,矩形的原點是左上角。 您有2個選項用於定位節點。您可以使用layoutX和layoutY。 VAR RECT =矩形{ layoutX:50 layoutY:50 widht:100 高度:100 }

或平移X和translateY

變種RECT =矩形{ 平移X:50 平移Y:50 widht:100 height:100 } 使用layoutX/Y和translateX/Y的主要目的是,translateX/Y可以改變,而layoutX/Y只能用於初始定位。例如,您可以在動畫中更改translateX/Y,同時在layoutX/Y中記住原始位置。最終位置將始終爲layoutX + translateX和layoutY + translateY。

要將原點移動到中心點(50,50),請使用負平移。 VAR RECT =矩形{ 平移X:-50 平移Y:-50 widht:100 高度:100 }

一些形狀並不基於左上原點。例如,Circle使用centerX和centerY。

+0

不夠好。我想將X,Y綁定到當前節點的寬度。 – 2009-08-26 10:09:58

+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 2009-08-26 14:49:38

+0

對不起,我忘記了,x和y已從Node中刪除。您必須使用layoutX/Y或translateX/Y。所以你可以做Rectangle {layoutX:bind rect.layoutBounds.width}。 – JimClarke 2009-08-26 15:01:51