首页 > 解决方案 > 如何在 LibGDX 中的按钮上切换“过度”样式?

问题描述

我想使用TextButton. 菜单应该可以通过鼠标和键盘访问。对于正确的悬停行为,我照常设置样式:

TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.up = skin.newDrawable("background", Color.GRAY);
textButtonStyle.down = skin.newDrawable("background", Color.DARK_GRAY);
textButtonStyle.checked = skin.newDrawable("background", Color.DARK_GRAY);
textButtonStyle.over = skin.newDrawable("background", Color.LIGHT_GRAY);
textButtonStyle.font = skin.getFont("default");

这适用于鼠标(over鼠标悬停时切换样式)。但是,我希望能够通过键盘选择菜单项。“当前选择的”菜单项应该可以使用箭头键选择并enter确认该项目。

键盘交互在这里不是问题,而是在按钮上设置“突出显示”模式。我想用键盘选择一个按钮应该和用鼠标悬停在它上面一样。但看起来没有办法使用 API 来“切换”按钮的状态。有isOver()方法,但没有setOver()方法。

有任何想法吗?我真的必须创建两种样式并将它们切换出来setStyle()吗?我会认为那丑陋..

标签: javalibgdx

解决方案


为您的演员创建​​一个自定义类并覆盖您的 isOver 方法以返回 isFocused || super.isOver()

顺便说一句,您可以查看https://github.com/MrStahlfelge/gdx-controllerutils/wiki/Button-operable-Scene2d以了解不重新发明轮子。


推荐阅读