[Avis de recherche] personne sachant faire un UI

Répondre
Partager Rechercher
Coucou la foule!
voila j'ai fait un petit addon pour druide et je cherche à créer un petit interface pour gérer les options. Rien de bien méchant, juste un truc style le menu options de gatherer.
Probleme : encore je comprend relativement bien le scripting lua, encore le codage de l'UI via le XML, ca ne me parle pas du tout . Je sait ce que je veux faire mais je me perd direct dans les méandres des fichiers XML.

Donc voila je cherche qq un qui serait capable de me faire ca, ou a default de m'en expliquer le fonctionnement général car on trouve peu de site/forum ou l'ont peu trouver ce genre de renseignements.

Voila, me mp si vous êtes intéresser
Arf, je sais que ca va pas t'aider et que tu vas être décu mais je ne peux pas m'empêcher de dire que j'ai *exactement* le meme problème !... La seule "solution" que j'ai trouvé est de faire des AddOns sans options ;-)
à mon avis le plus simple serait de te baser sur des frames déjà existantes que tu peux trouver dans d'autres Addons, en n'oubliant pas de citer ta source après dans les crédits de ton Addon.


bon courage pour la suite
C'est justement ce que j'essaie de faire
Sinon je peu toujours passer par les options de cosmos ou CT (ce que je fait déjà) mais j'aurais largement préféré le faire en Standalone avec son petit interface graphique. Pke les options en /xxx ça marche bien mais pour l'utilisateur lambda c'est plutôt moyen.
c'est pas très compliqué en fait, c'est le principe des boites dans les boites.

à la base, il faut une Frame, ensuite tu remplis les diverses sections.

en général les sections à ne pas louper sont:
Size: pour la taille de l'élément (affecté une valeur par défaut quelconque sinon)
Anchors: pour définir à quoi l'élément se raccroche
Scripts: pour définir des actions à faire sur certains événements
Layers: pour mettre des décorations et autres éléments non-intéractifs
Frames: pour inclure d'autres éléments graphiques dans un conteneur (la famille des Frame en général donc, mais y en a quelques autres).

exemple:

Code:
 <Frame name="montest" toplevel="true" parent="UIParent" movable="true" frameStrata="DIALOG" enableMouse="true" hidden="true">
     		<!-- ça c'est la taille de la fenêtre -->
     		<Size>   
     			<AbsDimension x="200" y="100"/>
     		</Size>
     
 		<!-- le point d'ancrage de la fenêtre par rapport au parent (l'écran dans ce cas précis) -->
     		<Anchors> 
     			<Anchor point="LEFT" relativePoint="LEFT">
 		 	<Offset> les décalages par rapport au point de référence
 		 		<AbsDimension x="5" y="250"/>
     				</Offset>
     			</Anchor>
     		</Anchors>
     
 		<!-- les scripts associés à la fenêtre et à des évènements spécifiques -->
     		<Scripts>
     			<OnLoad> 
 				this:RegisterEvent("VARIABLES_LOADED");
 				this:RegisterEvent("PLAYER_ENTERING_WORLD");
     			</OnLoad> 
     			<OnEvent> 
 			 -- ici c'est du lua pur beurre, les fonctions sont chargées à partir d'un fichier lua précisé au début du fichier xml.
     				--montest_OnEvent(event);
     			</OnEvent> 
     		</Scripts>
     
 		<!-- différente couches non intéractive pour les décorations ou des étiquettes -->
     		<Layers>
     			<Layer level="ARTWORK">
 		 	<Texture name="montestFrameHeader" file="Interface\DialogFrame\UI-DialogBox-Header">
 					<Size>
 		 		 <AbsDimension x="336" y="64"/>
 					</Size>
 					<Anchors>
 		 			<Anchor point="TOP">
 		 		 	<Offset>
 		 		 		<AbsDimension x="-12" y="12"/>
 		 		 	</Offset>
 		 			</Anchor>
 					</Anchors>
     				</Texture>
 		 	<FontString inherits="GameFontNormal" text="Mon Test">
 					<Size>
 		 		 <AbsDimension x="360" y="0"/>
 					</Size>
 					<Anchors>
 		 			<Anchor point="TOP" relativeTo="montestFrameHeader">
 		 		 	<Offset>
 		 		 		<AbsDimension x="0" y="-14"/>
 		 		 	</Offset>
 		 			</Anchor>
 					</Anchors>
     				</FontString>
     			</Layer>
     		</Layers>
     
 		<!-- pour ranger les autres éléments graphiques associés à la fenêtre -->
     		<Frames>
 			<Button name="montest_Close" inherits="GameMenuButtonTemplate" text="CLOSE">
     				<Anchors>
 		 		<Anchor point="BOTTOMRIGHT" relativeTo="montest" relativePoint="BOTTOMRIGHT">
 						<Offset>
 		 		 	<AbsDimension x="-15" y="15"/>
 		 			</Offset>
 					</Anchor>
     				</Anchors>
     				<Scripts>
 					<OnLoad>
     		    		    this:SetWidth(70);
 					</OnLoad>
 					<OnClick>
 		 			montest:Hide();
 					</OnClick>
     				</Scripts>
     			</Button>
     
     		</Frames>
     </Frame>
pour y accrocher d'autres choses tu rajoutes dans la section <Frames>, tout suit le même principe que pour le plus haut niveau.

c'est relativement documenté (en tout cas plus ce que j'ai pu voir ailleurs) dans GUIMover, SkinInfo ou Gatherer (ne prendre que GathererUI.xml/lua)
ok merci bcp vais essayer de m'y plonger un peu plus et regarder les xml que tu me conseil
En fait je crois que ce qui me rebute dans cette gestion des XML, c'est le fait de ne pas voir "réellement" le truc fini et de se perdre dans les différents niveaux
c'est à ça que sert le /console reloadui (ou /script ReloadUI() selon les gouts)

- 1 étiteur sur le xml
- 1 browser web sur le xml (ça évite les erreurs idiotes de syntaxe)

avoir un lien sur le FrameXML.log dans le répertoire Logs du WoW aide aussi en cas de problème d'objet (à réouvrir après chaque chargement d'interface).

pour faire ses placements d'objet, GUIMover (ça sauve rien en propre mais ça permet de positionner ses bouts d'UI, du moment qu'ils sont nommés et d'avoir les bonnes valeurs à reporter direct dans le xml au lieu de faire les choses à coup de modifs dans le fichier et de reloadui)

SkinInfo et GUIMover utilisent des templates donc bien que graphiquement plus dépouillés que l'UI de Gatherer ils sont un peu plus complexes à comprendre.

si tu as des questions par rapport à des trucs que tu vois dans les UI de ces 3 la, n'hésites pas, c'est moi qui les ai écrite.

le plus simple pour commencer c'est sans doute de prendre l'UI de Gatherer, de garder la frame GathererUI_Options puis de dégager tout le contenu dans la section <Frames> (sauf la fin, à partir du commentaire "Frame handling buttons").

ça te fera un cadre vide avec les décorations de la boite, la section de titre et les boutons de contrôle de la fenêtre.

Ensuite tu pourras peupler avec des boutons/slider/editbox selon ton besoin (copié/collé de l'UI de Gatherer pour avoir un modèle).

PS: n'oublies pas de changer les noms des divers éléments.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés