🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.4
Ця сторінка написана для версії:
1.21.4
Віджети — це, по суті, контейнерні компоненти візуалізації, які можна додавати на екран і з якими гравець може взаємодіяти за допомогою різних подій, таких як натискання мишкою, клавіш тощо.
Є кілька способів створити клас віджетів, наприклад розширити ClickableWidget
. Цей клас надає багато корисних утиліт, як-от керування шириною, висотою, позицією та обробку подій – він реалізує інтерфейси Drawable
, Element
, Narratable
і Selectable
:
Drawable
- для візуалізації - потрібен для реєстрації віджета на екрані за допомогою методу addDrawableChild
.Element
— для подій — обов’язковий, якщо ви хочете обробляти такі події, як натискання мишкою, клавіш тощо.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
та інші методи.
Ви можете обробляти такі події, як натискання мишею, клавіш, перевизначаючи onMouseClicked
, onMouseReleased
, onKeyPressed
та інші методи.
// 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
}