在Libgdx舞台中获取图像(或演员)的屏幕位置

4

我有这样一段代码:

Image myImage = new Image(new Texture("data/file.png"));

如何获取屏幕上myImage的位置?我尝试使用myImage.getX()myImage.getImageX(),但两者都返回0.0。出了什么问题?


1
getX() 应该可以完成任务。你试过移动它并检查吗? - idanakav
3个回答

9

我相信Actor中的getX()getY()是相对于其父容器的,因此您需要将坐标转换为“stage”坐标,然后再从那里转换为“screen”坐标。(我认为有更简单的方法来做到这一点,因此可能会有更好的答案)。

Image myImage = ...;
Vector2 coords = new Vector2(myImage.getX(), myImage.getY());
myImage.localToStageCoordinates(/*in/out*/coords);
myImage.getStage().stageToScreenCoordinates(/*in/out*/coords);

System.out.println("Image X " +myImage.get()+ " maps to screen " +coords.x);

需要创建一个坐标为零的Vector2(Vector2 coords = new Vector2(0, 0);). - Vitaliy Polchuk

1
只是猜测!!! - 移动图像并检查位置,但 getX() 返回 0.0 可能是因为移动的是相机,产生了运动效果,图像可能根本没有移动,而停留在初始位置 0.0(我认为这可能是你遗漏的东西)。

0
现在ActorlocalToScreenCoordinates方法,可以一次性获取所需内容:
Vector2 screenPosition = myImage.localToScreenCoordinates(new Vector2(0f, 0f))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接