java - 在 LibGDX 中,当 setFillParent 为 true 时,Actor 的位置是错误的

标签 java layout libgdx actor stage

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

说明问题的图片:

Image illustrating this

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

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

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

关于java - 在 LibGDX 中,当 setFillParent 为 true 时,Actor 的位置是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123362/

相关文章:

javascript - 我应该如何包含和引用我的 JavaScript 文件

java - Libgdx,移动相机时出现伪影

java - 具有负值的 java 子串的实现

java - 如何遍历 google collections 的 Multimap<?, Object>?

css - 如何在不控制嵌入的情况下将 DIV float 到 FLASH 上

python - PyQT5:水平布局内的网格布局

java - 侧滚云

java - JSONParser 类型没有可用的源代码

java - Windows 上的 Spark - "The system cannot find the path specified."

java - 如何获取用户在 Appolozic 中聊天的联系人列表?