当 setFillParent 为真时,Actor 的位置是错误的,在 LibGDX 中



我已经几个小时试图解决这个问题,快疯了,请看看我的问题。

说明问题的图像:

说明这一点的图像

  • exitButtonsetFillParent函数设置为false结果是图像的右侧,按钮居中在容器内,但大小错误。

  • 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是一个图像按钮或只是一个按钮,这意味着其图像或背景的可绘制对象大于buttonSize

解决此问题的最简单方法是覆盖getMinWidth()getMinHeight()返回零。例如:

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

最新更新