[英]LibGDX: Problems with getting Bounds
我在獲取表的x和y時遇到問題。
我有一個包含MenuItems單元格的菜單。 現在,我想檢查一下表格外部的touchDown是否以簡單的AABB檢測發生。 這樣很好!
現在,我希望在Table之外添加subMenus並執行table.addActor(subMenu)。 現在,它不起作用。
如果我打印x和yi得到1.0、1.0,但這不是正確的值。 使用table.getX(align)我也得到了錯誤的值。
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(獲取它們的值也不起作用)。
編輯:菜單的位置被另一個類更改。 如果我將Menu的x,y轉換為舞台,並且不設置其位置,它將起作用。
如果我設置電位器,它將轉換后的x / y值加倍。
從這里開始 ,只需創建一個類,即可為您提供演員在舞台上的位置。
public static Vector2 getStageLocation(Actor actor) {
return actor.localToStageCoordinates(new Vector2(0, 0));
}
您需要在(0,0)使用新矢量的原因是,它是actor的左下角。 然后它將轉換為舞台坐標,並為您提供演員的實際位置。
然后,您可以執行getStageLocation.x;
和getStageLocation.y;
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.