385 lines
7.1 KiB
Markdown
385 lines
7.1 KiB
Markdown
---
|
|
title: Propriétés UI
|
|
type: docs
|
|
weight: 13
|
|
---
|
|
|
|
Cette page documente les propriétés communes disponibles sur les widgets UI.
|
|
|
|
## Anchor (Positionnement)
|
|
|
|
La propriété `Anchor` contrôle la position et la taille du widget.
|
|
|
|
### Propriétés de Position
|
|
|
|
```
|
|
Anchor: (
|
|
Left: 10, // Distance depuis le bord gauche
|
|
Right: 10, // Distance depuis le bord droit
|
|
Top: 10, // Distance depuis le bord supérieur
|
|
Bottom: 10 // Distance depuis le bord inférieur
|
|
);
|
|
```
|
|
|
|
### Propriétés de Taille
|
|
|
|
```
|
|
Anchor: (
|
|
Width: 200, // Largeur fixe
|
|
Height: 100 // Hauteur fixe
|
|
);
|
|
```
|
|
|
|
### Propriétés Raccourcies
|
|
|
|
```
|
|
Anchor: (Full: 10); // Tous les côtés = 10
|
|
Anchor: (Horizontal: 20); // Gauche et Droite = 20
|
|
Anchor: (Vertical: 15); // Haut et Bas = 15
|
|
```
|
|
|
|
### Exemple Combiné
|
|
|
|
```
|
|
// Taille fixe, positionné depuis le coin supérieur gauche
|
|
Anchor: (Left: 50, Top: 100, Width: 300, Height: 200);
|
|
|
|
// Remplit le parent avec des marges
|
|
Anchor: (Full: 16);
|
|
|
|
// Ancré au coin inférieur droit
|
|
Anchor: (Right: 20, Bottom: 20, Width: 100, Height: 40);
|
|
|
|
// Pleine largeur, hauteur fixe en bas
|
|
Anchor: (Horizontal: 0, Bottom: 0, Height: 50);
|
|
```
|
|
|
|
## Background
|
|
|
|
La propriété `Background` définit l'apparence du fond du widget.
|
|
|
|
### Couleur Unie
|
|
|
|
```
|
|
Background: (Color: #ff5500);
|
|
Background: (Color: #000000(0.5)); // Avec opacité
|
|
```
|
|
|
|
### Texture Simple
|
|
|
|
```
|
|
Background: "MyTexture.png";
|
|
Background: (TexturePath: "MyTexture.png");
|
|
```
|
|
|
|
### Texture 9-Patch (Étirable)
|
|
|
|
```
|
|
// Bordure uniforme
|
|
Background: (TexturePath: "Panel.png", Border: 20);
|
|
|
|
// Bordures horizontales/verticales séparées
|
|
Background: (
|
|
TexturePath: "Button.png",
|
|
HorizontalBorder: 80,
|
|
VerticalBorder: 12
|
|
);
|
|
```
|
|
|
|
### Utiliser PatchStyle
|
|
|
|
```
|
|
@MyBackground = PatchStyle(
|
|
TexturePath: "Panel.png",
|
|
Border: 16
|
|
);
|
|
|
|
Group {
|
|
Background: @MyBackground;
|
|
}
|
|
```
|
|
|
|
## Padding
|
|
|
|
La propriété `Padding` définit l'espacement intérieur.
|
|
|
|
```
|
|
Padding: (Full: 16); // Tous les côtés
|
|
Padding: (Horizontal: 20); // Gauche et Droite
|
|
Padding: (Vertical: 10); // Haut et Bas
|
|
Padding: (Left: 10, Right: 20); // Côtés individuels
|
|
Padding: (Top: 5, Bottom: 15, Horizontal: 10);
|
|
```
|
|
|
|
### Utiliser le Constructeur Padding
|
|
|
|
```
|
|
@ContentPadding = Padding(Full: 16, Top: 8);
|
|
|
|
Group {
|
|
Padding: @ContentPadding;
|
|
}
|
|
```
|
|
|
|
## LayoutMode
|
|
|
|
La propriété `LayoutMode` contrôle l'arrangement des enfants.
|
|
|
|
### Modes d'Empilement
|
|
|
|
| Mode | Description |
|
|
|------|-------------|
|
|
| `Top` | Empile les enfants de haut en bas |
|
|
| `Bottom` | Empile les enfants de bas en haut |
|
|
| `Left` | Empile les enfants de gauche à droite |
|
|
| `Right` | Empile les enfants de droite à gauche |
|
|
|
|
```
|
|
Group {
|
|
LayoutMode: Top; // Liste verticale, alignée en haut
|
|
|
|
Label { Text: "Premier"; Anchor: (Height: 30); }
|
|
Label { Text: "Deuxième"; Anchor: (Height: 30); }
|
|
Label { Text: "Troisième"; Anchor: (Height: 30); }
|
|
}
|
|
```
|
|
|
|
### Modes de Centrage
|
|
|
|
| Mode | Description |
|
|
|------|-------------|
|
|
| `Middle` | Centre les enfants verticalement |
|
|
| `CenterMiddle` | Centre les enfants horizontalement et verticalement |
|
|
|
|
```
|
|
Group {
|
|
LayoutMode: CenterMiddle;
|
|
|
|
Label { Text: "Centré !"; }
|
|
}
|
|
```
|
|
|
|
### Modes avec Défilement
|
|
|
|
| Mode | Description |
|
|
|------|-------------|
|
|
| `TopScrolling` | Défilement vertical, contenu depuis le haut |
|
|
| `BottomScrolling` | Défilement vertical, contenu depuis le bas (style chat) |
|
|
|
|
```
|
|
Group #ChatLog {
|
|
LayoutMode: BottomScrolling;
|
|
ScrollbarStyle: @DefaultScrollbarStyle;
|
|
AutoScrollDown: true;
|
|
}
|
|
```
|
|
|
|
### Mode Retour à la Ligne
|
|
|
|
| Mode | Description |
|
|
|------|-------------|
|
|
| `LeftCenterWrap` | Flux gauche-droite, retour à la ligne suivante |
|
|
|
|
```
|
|
Group #ItemGrid {
|
|
LayoutMode: LeftCenterWrap;
|
|
|
|
// Les items passeront à la ligne suivante
|
|
}
|
|
```
|
|
|
|
## FlexWeight
|
|
|
|
La propriété `FlexWeight` contrôle le dimensionnement flexible dans la mise en page.
|
|
|
|
```
|
|
Group {
|
|
LayoutMode: Left;
|
|
|
|
Group {
|
|
Anchor: (Width: 100); // Largeur fixe
|
|
}
|
|
|
|
Group {
|
|
FlexWeight: 1; // Prend l'espace restant
|
|
}
|
|
|
|
Group {
|
|
FlexWeight: 2; // Prend 2x l'espace de FlexWeight: 1
|
|
}
|
|
}
|
|
```
|
|
|
|
## Visible
|
|
|
|
Contrôle la visibilité du widget.
|
|
|
|
```
|
|
Group #Panel {
|
|
Visible: true; // ou false, ou @Variable
|
|
}
|
|
|
|
Button #CloseButton {
|
|
Visible: @CloseButton; // Contrôlé par paramètre de template
|
|
}
|
|
```
|
|
|
|
## Text
|
|
|
|
Définit le contenu texte pour les widgets Label et TextButton.
|
|
|
|
```
|
|
Label {
|
|
Text: "Texte statique";
|
|
}
|
|
|
|
Label {
|
|
Text: %server.ui.title; // Clé de traduction
|
|
}
|
|
|
|
Label #DynamicText {
|
|
Text: ""; // Défini depuis Java
|
|
}
|
|
```
|
|
|
|
## ScrollbarStyle
|
|
|
|
Configure l'apparence de la scrollbar pour les conteneurs défilants.
|
|
|
|
```
|
|
Group {
|
|
LayoutMode: TopScrolling;
|
|
ScrollbarStyle: (
|
|
Spacing: 6,
|
|
Size: 6,
|
|
Background: (TexturePath: "Scrollbar.png", Border: 3),
|
|
Handle: (TexturePath: "ScrollbarHandle.png", Border: 3),
|
|
HoveredHandle: (TexturePath: "ScrollbarHandleHovered.png", Border: 3),
|
|
DraggedHandle: (TexturePath: "ScrollbarHandleDragged.png", Border: 3)
|
|
);
|
|
}
|
|
```
|
|
|
|
### Options ScrollbarStyle
|
|
|
|
| Propriété | Description |
|
|
|-----------|-------------|
|
|
| `Spacing` | Écart entre la scrollbar et le contenu |
|
|
| `Size` | Largeur/hauteur de la scrollbar |
|
|
| `Background` | Fond de la piste |
|
|
| `Handle` | Apparence normale de la poignée |
|
|
| `HoveredHandle` | Poignée au survol |
|
|
| `DraggedHandle` | Poignée pendant le glissement |
|
|
| `OnlyVisibleWhenHovered` | Masquer quand pas d'interaction |
|
|
|
|
## AutoScrollDown
|
|
|
|
Pour les conteneurs BottomScrolling, défile automatiquement vers le nouveau contenu.
|
|
|
|
```
|
|
Group #ChatLog {
|
|
LayoutMode: BottomScrolling;
|
|
AutoScrollDown: true;
|
|
}
|
|
```
|
|
|
|
## Disabled
|
|
|
|
Désactive l'interaction avec un widget.
|
|
|
|
```
|
|
Button #SubmitButton {
|
|
Disabled: false;
|
|
}
|
|
|
|
ActionButton #Binding {
|
|
Disabled: true;
|
|
}
|
|
```
|
|
|
|
## TooltipText
|
|
|
|
Affiche une infobulle au survol.
|
|
|
|
```
|
|
Button #InfoButton {
|
|
TooltipText: %ui.tooltip.help;
|
|
}
|
|
```
|
|
|
|
## TextTooltipStyle
|
|
|
|
Configure l'apparence de l'infobulle.
|
|
|
|
```
|
|
Button {
|
|
TooltipText: "Texte d'aide";
|
|
TextTooltipStyle: (
|
|
Background: (TexturePath: "TooltipBg.png", Border: 24),
|
|
MaxWidth: 400,
|
|
LabelStyle: (Wrap: true, FontSize: 16),
|
|
Padding: 24
|
|
);
|
|
}
|
|
```
|
|
|
|
## Combinaisons de Propriétés Courantes
|
|
|
|
### Panneau avec Titre et Contenu
|
|
|
|
```
|
|
Group #Panel {
|
|
Anchor: (Width: 400, Height: 300);
|
|
Background: (TexturePath: "Panel.png", Border: 20);
|
|
LayoutMode: Top;
|
|
Padding: (Full: 16);
|
|
|
|
Label #Title {
|
|
Anchor: (Height: 40);
|
|
// ...
|
|
}
|
|
|
|
Group #Content {
|
|
FlexWeight: 1;
|
|
LayoutMode: TopScrolling;
|
|
ScrollbarStyle: @DefaultScrollbarStyle;
|
|
Padding: (Top: 8);
|
|
}
|
|
}
|
|
```
|
|
|
|
### Rangée de Boutons Horizontale
|
|
|
|
```
|
|
Group #ButtonRow {
|
|
Anchor: (Height: 50);
|
|
LayoutMode: Right;
|
|
Padding: (Horizontal: 10);
|
|
|
|
TextButton #Cancel {
|
|
Anchor: (Width: 100);
|
|
}
|
|
|
|
Group { Anchor: (Width: 10); } // Espaceur
|
|
|
|
TextButton #Confirm {
|
|
Anchor: (Width: 100);
|
|
}
|
|
}
|
|
```
|
|
|
|
### Overlay Plein Écran
|
|
|
|
```
|
|
Group #Overlay {
|
|
Anchor: (Full: 0);
|
|
Background: (Color: #000000(0.7));
|
|
LayoutMode: CenterMiddle;
|
|
|
|
Group #Dialog {
|
|
Anchor: (Width: 500, Height: 300);
|
|
Background: (TexturePath: "Dialog.png", Border: 20);
|
|
}
|
|
}
|
|
```
|