🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
This page is written for:
1.21
This page is written for:
1.21
Виджеты — это контейнеризированные компоненты рендеринга, которые можно добавить на экран, где игрок взаимодействует через различные события, например щелчки мыши или нажатия клавиш.
Существует несколько способов создания класса виджета, например, путем расширения ClickableWidget
. Этот класс предоставляет множество полезных утилит, таких как управление шириной, высотой, положением и обработка событий. Он реализует интерфейсы Drawable
, Element
, Narratable
и Selectable
:
Drawable
— для рендеринга — требуется для регистрации виджета на экране с помощью метода addDrawableChild
.Элемент
— для событий — требуется, если вы хотите обрабатывать такие события, как щелчки мыши, нажатия клавиш и т. д.Narratable
— для доступности — требуется, чтобы сделать ваш виджет доступным для программ чтения с экрана и других инструментов обеспечения доступности.Selectable
— для выбора — требуется, если вы хотите сделать виджет доступным для выбора с помощью клавиши Tab - это также способствует повышению доступности.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;
}
}
Как и все виджеты, его необходимо добавить на экран с помощью метода addDrawableChild
, который предоставляется классом Screen
. Обязательно сделайте это в методе init
.
// Add a custom widget to the screen.
// x, y, width, height
CustomWidget customWidget = new CustomWidget(40, 80, 120, 20);
this.addDrawableChild(customWidget);
Вы можете обрабатывать такие события, как щелчки мыши и нажатия клавиш, переопределяя методы onMouseClicked
, onMouseReleased
, onKeyPressed
и другие.
Например, вы можете заставить виджет менять цвет при наведении на него курсора, используя метод isHovered()
, предоставляемый классом ClickableWidget
:
// 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
}