2009-08-24 331 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

相关问题