[Résolu] Interface Graphique - Prioritée d'affichage des fenêtres.
Bonjour , voila plusieurs mois que je galère sur ce problème de priorité d'affichage des fenêtres sur mon interface graphiques. Je voudrais pouvoir afficher en premier plan la fenêtre sur la quelle l'utilisateur a cliqué et passer les autres fenêtres en arrière plan. Je gère cela dans la fonction update de mon objet window en LUA ce qui n'est peut être pas une bonne idée, je n'en sais rien bref voici mon code si quelqu'un aurait une solution a mon problème j'aimerai comprendre comment je pourrais faire en sorte que ca fonctionne.
Le code du fichier window.lua :
local Window = {}
J'ai finalement réussi a faire ce que je voulais coder, merci pour ton aide David ! ^^
Il m'est difficile de comprendre ton code, mais par contre je peux t'expliquer le principe.
1) Il faut que tes fenêtres soient dans une liste
2) La fenêtre en 1er dans la liste est celle la plus en dessous des autres, et donc la dernière est celle qui est le plus au 1er plan
3) Quand l'utilisateur clique :
POUR CHAQUE FENETRE DANS L'ORDRE INVERSE DE LA LISTE SI MOUSEX et MOUSEY sont à l'intérieur de la fenêtre ALORS NOTER CETTE FENETRE COMME CELLE CLIQUEE break -- sors de la boucle sinon un fenêtre en dessous pourrait prendre la main !! FIN FIN SI UNE FENETRE A ETE CLIQUEE ALORS Passer cette fenêtre au 1er plan en la déplaçant dans la liste en dernière position FIN
Bonjour David, j'espère que ca va ! J'ai tenter d'amélioré mon code en essayant d'appliquer l'exemple que tu m'as donné, j'ai l'impréssion que ma fonction pour changé la la position de mon objet window dans ma liste ne fonctionne pas correctement puisque c'est encore un peu aléatoire mais sinon la structure du code respecte ton exemple je te montre le code que j'ai :
la fonction de déplacement dans la liste me parait douteuse.
"
Est ce que je dois utilisé la fonction love.mouse.isDown(1) ou juste checker la colision ?
J'ai compris que dans ma fonction update je dois d'abord géré l'évènement du clique de l'utilisateur donc la fonction love.mouse.isDown(1) en premier, puis intégré une boucle qui lis la liste qui contient mes fenêtres a dans le sens inverse et regarder la colision dans la box de la fenêtre enregistrer l'ID de la fenêtre puis sortir de la boucle avec un break pour qu'aucune des fenêtre en arrière plan ne prenne la main, puis placer la fenetre correspondant a l'ID en dernière position, mais j'ai l'impréssion que la fonction pour réaliser ce changement de position et foireuse pourrait tu m'envoyé un lien vers une fonction qui marche bien ??
J'essaye de trouver une solution pour l'instant je galère...
Mon code:
C'est illisible 🙁
Il y a un mode "code" dans le forum, c'est l'icone "<>".
Pour déplacer un élément dans une table, je pense que table.move c'est pas bon. Ca sert pour déplacer d'une table à une autre non ?
Moi je ferais :
local element = t[position] table.insert(t,element) table.remove(t,position)
- 6 Forums
- 257 Sujets
- 899 Posts
- 0 En ligne
- 45.6 {numéro}K Membres