如何使用JSON在LibGDX中更改属性对话框的样式?

3
在我的libGdx项目中,我使用一个.json文件来设置属性对话框的按钮样式。我有两个按钮:红色(关闭)和绿色(打开)。
我想在它们之间切换。是否有一种方法可以在JSON文件中设置样式?
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
   default: { down: ON_Button, up: ON_Button, font: default-font, fontColor: white },
   toggle: { down: ON_Button, up: ON_Button, checked: OFF_Button, font: default-font, fontColor: white, downFontColor: red }
},
1个回答

2

按钮支持 setChecked 方法,因此您可以使用一种样式完成此操作:

com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
    toggle: { 
        down: OFF_Button, // <- pressed
        up: OFF_Button, // <- not checked
        checked: ON_BUTTON, // <- checked
        font: default-font, 
        fontColor: white 
    },
},

调用您的按钮的setChecked(bool)方法以切换状态。此外,当您单击它时,按钮会自动切换选中状态。


这应该是切换而不是默认吗?我对JSON和样式不是很了解,但据我所知,他想要的样式应该被称为“toggle”(这不是技术问题,只是命名)。他的JSON文件是正确的,对吗? - Robert P
@Springrbua,是的,这种样式应该被命名为“复选框”或“切换开关”之类的名称。此外,“TextButtonStyle”仅需要“font”字段作为必填字段,所以看起来是正确的。 - desertkun
谢谢。直到现在我在我的游戏中没有需要这个,因为我没有菜单,但当我实现菜单时,这些信息会有帮助的:P 谢谢。+1 - Robert P
我无法让它正常工作。如果我在按钮上调用 setChecked,它不总是显示打开的按钮吗?你能给我一个例子吗?谢谢! - user2246120
问题在于正确定义json。setChecked的行为类似于checkbox,它有两种状态:未选中(默认为up字段图像)和选中(checked图像)。另外请注意,如果您尝试实现复选框,则不应手动调用setChecked,因为TextButton将在单击后自动调用此方法。 - desertkun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接