Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LIBGDX-获取表中参与者的位置_Libgdx - Fatal编程技术网

LIBGDX-获取表中参与者的位置

LIBGDX-获取表中参与者的位置,libgdx,Libgdx,标题说明了一切,我想知道演员在桌子里的位置 按钮=新按钮(bs) 表。添加(按钮)。宽度(50)。高度(50) table.top().center() 提前谢谢 编辑:使用button.localToStageCoordinates(新矢量2(button.getX(),button.getY()) 我得到了一个接近的位置,但不精确,这是一个屏幕截图,红色的方块是我得到的位置,而透明的方块是按钮 试试: button.localToStageCoordinates(new Vector2(bu

标题说明了一切,我想知道演员在桌子里的位置

按钮=新按钮(bs)

表。添加(按钮)。宽度(50)。高度(50)

table.top().center()

提前谢谢

编辑:使用
button.localToStageCoordinates(新矢量2(button.getX(),button.getY())
我得到了一个接近的位置,但不精确,这是一个屏幕截图,红色的方块是我得到的位置,而透明的方块是按钮

试试:

button.localToStageCoordinates(new Vector2(button.getX(), button.getY()));
这将返回带有实际位置的矢量2。我认为应该先调用table.validate(),然后才能获得按钮的位置

validate()调用layout()。创建表格后,将在下一次绘图时自动调用layout()。如果在表初始化之后需要位置,我认为需要调用layout()方法

布局()说明:

计算并缓存绘制所需的任何信息,如果此参与者有子对象,则定位并调整每个子对象的大小,对宽度或高度已更改的每个子对象调用invalidate(),并对每个子对象调用validate()。几乎不应该直接调用此方法,而应该使用validate()。 重写:WidgetGroup中的布局()

validate()说明:

确保演员已被安排好。如果自上次调用validate()以来已调用invalidate(),或者如果需要布局参与者,则调用layout()。此方法通常在执行绘图之前在Actor.draw(批处理、浮点)中调用。 由布局中的:validate()指定


好吧,我是这样做的:

button.localToParentCoordinates(new Vector2(table.getX(), table.getY()));

感谢Yasen Bagalev为我指明了正确的方向。

这是我的舞台没有指定的视口吗?因为我的已经试过了,我回家后会试试的。每个舞台都有视口。如果不指定一个,则将创建ScalingViewport。我想说的是localToStageCoordinates方法如何知道我想要的阶段坐标,因为具有指定视口坐标的阶段与没有指定视口的阶段不同,顺便说一句,我试过了,它给了我一个接近的位置,但不是一个精确的位置。我现在发布了一个屏幕截图c: