Віджети — це, по суті, контейнерні компоненти візуалізації, які можна додавати на екран і з якими гравець може взаємодіяти за допомогою різних подій, таких як натискання мишкою, клавіш тощо.
Створення віджету
Є кілька способів створити клас віджетів, наприклад розширити ClickableWidget. Цей клас надає багато корисних утиліт, як-от керування шириною, висотою, позицією та обробку подій – він реалізує інтерфейси Drawable, Element, Narratable і Selectable:
Drawable- для візуалізації - потрібен для реєстрації віджета на екрані за допомогою методуaddDrawableChild.Element— для подій — обов’язковий, якщо ви хочете обробляти такі події, як натискання мишкою, клавіш тощо.Narratable- для спеціальних можливостей - необхідний, щоб зробити ваш віджет доступним для програм зчитування з екрана та інших інструментів доступності.Selectable— для вибору — обов’язковий, якщо ви хочете зробити свій віджет доступним для вибору за допомогою клавіші Tab — це також сприяє доступності.
java
public class CustomWidget extends ClickableWidget {
public CustomWidget(int x, int y, int width, int height) {
super(x, y, width, height, Text.empty());
}
@Override
protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
// We'll just draw a simple rectangle for now.
// x1, y1, x2, y2, startColor, endColor
int startColor = 0xFF00FF00; // Green
int endColor = 0xFF0000FF; // Blue
context.fillGradient(getX(), getY(), getX() + this.width, getY() + this.height, startColor, endColor);
}
@Override
protected void appendClickableNarrations(NarrationMessageBuilder builder) {
// For brevity, we'll just skip this for now - if you want to add narration to your widget, you can do so here.
return;
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Додавання віджету до екрана
Як і всі віджети, вам потрібно додати його на екран за допомогою методу addDrawableChild, який надається класом Screen. Переконайтеся, що ви робите це в методі init.
java
// Add a custom widget to the screen.
// x, y, width, height
CustomWidget customWidget = new CustomWidget(40, 80, 120, 20);
this.addDrawableChild(customWidget);1
2
3
4
2
3
4

Події віджету
Ви можете обробляти такі події, як натискання мишею, клавіш, перевизначаючи onMouseClicked, onMouseReleased, onKeyPressed та інші методи.
Наприклад, ви можете змусити віджет змінювати колір, коли на нього наводите курсор, використовуйте метод isHovered(), наданий класом ClickableWidget:
java
// This is in the "renderWidget" method, so we can check if the mouse is hovering over the widget.
if (isHovered()) {
startColor = 0xFFFF0000; // Red
endColor = 0xFF00FFFF; // Cyan
}1
2
3
4
5
6
2
3
4
5
6


