Skip to content

Widget personalizzati

Gli Widget sono essenzialmente componenti di rendering containerizzate, e i giocatori possono interagirci attraverso vari eventi come click del mouse, pressione di tasti, e altro.

Creare un Widget

Ci sono varie strade per creare una classe widget, tipo estendere ClickableWidget. Questa classe fornisce un sacco di utilities, come gestire la larghezza, altezza, posizione, e gestire gli eventi - implementa le interfacce Drawable, Element, Narratable, e Selectable:

  • Drawable - per il rendering - Richiesto per registrate il widget sulla schermata usando il metodo addDrawableChild.
  • Element - per eventi - Necessario se vuoi gestire gli eventi come click del mouse, pressione tasti, e altro.
  • Narratable - per accessibilità - Necessario per fare il tuo widget accessibile ai lettori di schermi e altri strumenti per l'accessibilità.
  • Selectable - per la selezione - Necessario se vuoi rendere il tuo widget selezionabile usando il testo Tab - anche questo aiuta per l'accessibilità.
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;
	}
}

Aggiungere il Widget alla Schermata

Come tutti i widget, devi aggiungerlo alla schermata usando il metodo addDrawableChild, che è fornito dalla classe Screen. Assicurareti di farlo nel metodo init.

java
// Add a custom widget to the screen.
// x, y, width, height
CustomWidget customWidget = new CustomWidget(40, 80, 120, 20);
this.addDrawableChild(customWidget);

Widget personalizzato sullo schermo.

Eventi Widget

Puoi gestire eventi come click del mouse, pressione di tasti, sovrascrivendo i metodi onMouseClicked, onMouseReleased, onKeyPressed, e altri.

Per esempio, puoi far cambiare colore al widget quando il mouse ci passa sopra (hovering) usando il metodo isHovered() fornito dalla classe 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
}

Esempio Evento Hovering