簡體   English   中英

當LibFDX中setFillParent為true時,Actor的位置是錯誤的

[英]Actor's position is wrong when setFillParent is true, in LibGDX

我已經花了好幾個小時試圖解決這個問題並且發瘋了,請看看我的問題。

說明問題的圖像:

圖像說明這一點

  • exitButtonsetFillParent函數設置為false ,結果是圖像的右側,按鈕在Container內居中但尺寸錯誤。

  • exitButtonsetFillParent函數設置為true ,結果是圖像的左側,按鈕的大小正確但位置錯誤。

這是代碼:

    Container container = new Container(exitButton);

    container.fill();

    container.setRound(false);

    container.setSize(buttonSize, buttonSize);

    exitButton.setFillParent(true);

    //exitButton.setFillParent(false);

    container.setPosition(
            ((float)viewportWidth/7f) - (buttonSize/2f)
            ,((float)viewportHeight*5f/6f)  - (buttonSize/2f)
    );

小部件的設計是由父母設計的。 setFillParent(true)允許窗口小部件覆蓋它並設置自己的大小(以匹配其父級的大小)。 除非它是層次結構的頂級窗口小部件,否則您永遠不想這樣做,因為當窗口小部件控制其自己的大小時,它的父級將失去正確定位它的能力。

至於為什么按鈕被繪制得比容器大,如果子項的minWidth / minHeight大於父項,則會發生這種情況。 假設exitButton是一個ImageButton或只是一個Button,這意味着它的Image或background的drawable大於buttonSize

最簡單的方法是覆蓋getMinWidth()getMinHeight()以返回零。 例如:

exitButton = new Button(skin, style){
    public float getMinWidth(){return 0;}
    public float getMinHeight(){return 0;}
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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