簡體   English   中英

LibGDX:獲取界限的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM