🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.10
Віджети — це, по суті, контейнерні компоненти візуалізації, які можна додавати на екран і з якими гравець може взаємодіяти за допомогою різних подій, таких як натискання мишкою, клавіш тощо.
Є кілька способів створити клас віджетів, наприклад розширити 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 та інші методи.
Наприклад, ви можете змусити віджет змінювати колір, коли на нього наводите курсор, використовуйте метод 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
}