我在获取表格的x和y时遇到问题。
我有一个菜单,其中包含MenuItems的单元格。现在我想检查表外的touchDown是否发生了sipmle AABB dedection。 这很好用!
现在我想在表外添加subMenus并执行table.addActor(subMenu)。 现在它不起作用。
如果我打印x和y我得到1.0,1.0但这不是正确的值。 使用table.getX(对齐)我也得到了错误的值。
public void addItem (MenuItem item) {
add(item).fillX().row();
pack();
item.addListener(menuItemListener);
PopupMenu subMenu = item.getSubMenu();
if (subMenu != null) {
subMenu.setParent(this);
subMenu.setStage(getStage());
}
}
public void showMenu() {
getParent().addActor(this);
Stage stage = getStage();
if (stage != null) stage.addListener(stageListener);
}
/** Hides this popupMenu and all its subMenus */
protected boolean hideMenu() {
if (!getParent().getChildren().removeValue(this, true)) return false;
Stage stage = getStage();
if (stage != null) {
stage.removeListener(stageListener);
stage.unfocus(this);
}
childrenChanged();
return true;
}
public boolean contains (float x, float y) {
return getX() <= x && getX() + getWidth() >= x && getY() <= y && getY() + getHeight() >= y;
}
public boolean menuStructureContains (float x, float y) {
return contains(x, y) || subMenu != null && subMenu.menuStructureContains(x, y);
}
我但是我需要细胞的x和y(得到它们的值也不起作用)。
编辑:菜单的位置被其他类更改。如果我将菜单的x,y转换为舞台并且不设置其位置,则可以正常工作。
如果我设置了potition,它会将转换的x / y值加倍。
答案 0 :(得分:2)
从here开始,只需创建一个类,它可以为您提供舞台上演员的位置。
public static Vector2 getStageLocation(Actor actor) {
return actor.localToStageCoordinates(new Vector2(0, 0));
}
你需要在(0,0)处使用新向量的原因是因为这是你演员的左下角。然后它会将其转换为舞台坐标,并为您提供演员的实际位置。
然后你可以getStageLocation.x;
和getStageLocation.y;
希望这有帮助