[英]Actor's position is wrong when setFillParent is true, in LibGDX
我已經花了好幾個小時試圖解決這個問題並且發瘋了,請看看我的問題。
說明問題的圖像:
當exitButton
的setFillParent
函數設置為false
,結果是圖像的右側,按鈕在Container內居中但尺寸錯誤。
當exitButton
的setFillParent
函數設置為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.