| Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? | |
|
|
Auteur | Message |
---|
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Sam 21 Fév 2015 - 11:14 | |
| Bonjour,
Ca fait un moment que je lis la ''MAGNIFIQUE" aide AGS traduit par le bienfaiteur de l'humanité qu'est Kitai et y'a une rubrique qui me pose un peu question, c'est celle des calques.
Quelqu'un pourrait m'expliquer comment ça fonctionne clairement, comment ça se code et quelles sont les possibilités ?
J'ai plusieurs envie et je ne sais pas si le calque répond à mes besoins.
Je voudrais pouvoir proposer une version, JOUR/ une version NUIT de mes rooms, en fonction de l'heure. Est-il possible alors d'afficher un claque sur le ciel , pour le remplacer par une nuit étoilée par exemple à un certain moment de la journée ? Ou bien, faut-il y mieux proposer un Background différent (d'ailleurs, comment techniquement ça se programmerait ?)
Je voudrais afficher un petit compteur nombres sur les objets que je peux avoir en quantités. L'idée serait afficher un petit chiffre sur l'image de l'objet quand on ouvre le Gui inventaire. Le calque serait aussi mon ami ? Si oui, comment faire ?
Merci d'avance. |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Dim 22 Fév 2015 - 16:28 | |
| Salut filoulefilou, Techniquement les calques sont pas très différents des GUI : ce sont des objets qui vont être affichés à l'écran au-dessus de tout le reste (mais pas au-dessus des GUI justement). Seulement l'utilisation est pas la même. Dans ton cas je pense qu'utiliser un deuxième arrière-plan serait effectivement une meilleure idée. Pour ajouter un second arrière-plan, tu vas simplement choisir "Import a new background" dans la liste déroulante qui affiche "Main background" dans l'éditeur de pièce. Ça aura pour effet immédiat d'animer ton arrière-plan en alternant automatiquement entre les deux images. Je ne sais plus comment tu désactives ça, peut-être qu'il y a une case à décocher, ou bien peut-être qu'il faut passer la valeur 0 à la propriété BackgroundAnimationDelay. Ensuite tu peux choisir dynamiquement dans les script l'image d'arrière-plan que tu veux utiliser en appelant la commande SetBackgroundFrame. En ce qui concerne le nombre sur les objets, là encore les calques ne sont pas la solution. Le problème des calques dans AGS c'est qu'on ne peut en utiliser que 10 simultanément. Donc si on utilisait un calque par objet, ça te limiterait à 10 objets. De plus j'imagine que tes objets sont affichés dans un GUI inventaire, et les calques sont affichés sous les GUI. Ce que tu pourrais faire ici c'est modifier directement l'image de l'objet d'inventaire. Pour le coup ça devient un peu plus technique, faut mettre les mains dans le cambouis. L'idée sera de créer autant d'image dynamiques ( DynamicSprite) que tu as d'objets d'inventaire différentes dans ton projet. Ainsi tu t'arrangeras pour que chaque image dynamique corresponde à l'image initiale de l'objet d'inventaire, sur laquelle tu auras ajouté en texte le nombre d'objets de la sorte que possède le joueur. Je pourrai détailler plus tard et te proposer un code pour t'inspirer si tu veux. En bref les calques sont très peu utilisés. Je pense que leur utilisation principale consiste notamment à rendre des effets de particules. Créer un calque, c'est un peu créer un objet temporaire qui n'interagira pas avec les éléments dans la pièce. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
| |
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Dim 22 Fév 2015 - 19:05 | |
| |
|
| |
Atavismus Grand Cliqueur Royal
Nombre de messages : 1857
Localisation : France
Date d'inscription : 27/01/2014
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Lun 23 Fév 2015 - 13:01 | |
| Il y a un moment, maître Kitai m'avait fait un p'tit bout de code pour "draw" sur le background d'un gui. Si ça t'intéresse et que tu sais te servir des fonctions de type "draw", ça pourrait être une solution concernant les quantités de l'inventaire. (J'ai réutilisé cette méthode pour pour Dustbowl) |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Mer 25 Fév 2015 - 12:56 | |
| Ouais, ça m’intéresse GRANDEMENT Sinon, j'ai finalement utilisé les SetBackgroundFrame, pour avoir 4 versions de mes rooms en fonction du moment de la journée (et donc, exit mes rooms animés déjà, j'en suis retourné à placer des objets animés à la place, tant pis) Alors, pour ceux qui se posent la question, SetBackgroundFrame, si définit à la load d'une Room bloque l'animation du Background. Exemple SetBackgroundFrame(1); Sinon, si SetBackgroundFrame n'est pas définit, ça enchaine nos différentes Frame de Background comme lors d'une animation normal de background. Aussi, SetBackgroundFrame avec de bonnes conditions, peut être configuré aussi dans un room_RepExec, c'est pratique pour des changements de Background lié au temps qui passent par exemple (avec l'utilisation d'un Timer notamment) |
|
| |
Atavismus Grand Cliqueur Royal
Nombre de messages : 1857
Localisation : France
Date d'inscription : 27/01/2014
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Mer 25 Fév 2015 - 21:32 | |
| Ok filou, alors voici le code de Kitai (encore merci à lui). L'idée est de créer/stocker tout ce qu'il faut au début du jeu dans des tableaux. Soit un sprite dynamique, une surface et le sprite initial pour chaque GUI. Déclaration des tableaux : - Code:
-
DynamicSprite *fondGUI[]; DrawingSurface *surfaceGUI[]; int initialGUI[];
Dans la fonction game_start() : - Code:
-
fondGUI = new DynamicSprite[Game.GUICount]; surfaceGUI = new DrawingSurface[Game.GUICount]; initialGUI = new int[Game.GUICount]; int i=0; while (i < Game.GUICount){initialGUI[i] = gui[i].BackgroundGraphic; i++;} //on parcourt tous les GUI et on peuple le tableau initialGUI pour pouvoir restaurer le background initial de chaque GUI
Deux fonctions à déclarer : - Code:
-
DrawingSurface* GetDrawingSurface(this GUI*) { if (this.BackgroundGraphic == 0) fondGUI[this.ID] = DynamicSprite.Create(this.Width, this.Height); else fondGUI[this.ID] = DynamicSprite.CreateFromExistingSprite(this.BackgroundGraphic); this.BackgroundGraphic = fondGUI[this.ID].Graphic; surfaceGUI[this.ID] = fondGUI[this.ID].GetDrawingSurface(); return surfaceGUI[this.ID]; }
function RestoreBackground(this GUI*){this.BackgroundGraphic = initialGUI[this.ID];}
Exemple d'utilisation : - Code:
-
DrawingSurface* maSurface = gMonGui.GetDrawingSurface(); maSurface.DrawingColor = 14; maSurface.DrawString(0, 100, Game.NormalFont, "J'écris sur le background de mon gui!"); maSurface.Release();
En fin, pour restaurer le background d'un GUI dans mon état initial : - Code:
-
gMonGui.RestoreBackground();
De là, tu peux très bien "écrire" sur ton GUI inventaire. Tu parcours les items contenus dans ton inventaire, tu vérifies la quantité et si elle est supérieure à 1 (ou pas si tu veux afficher 1) tu la "DrawString" sur la surface de ton GUI inventaire. Le principe est simple. Le plus compliqué est de calculer les coordonnées x et y pour écrire. Ca va dépendre : * de la width et de la height de tes items * de la width et de la height de ton inventaire (inventory window) ainsi que de sa position (dans le GUI qui le contient) * du nombre d'items par ligne Tu vas avoir besoin de InventoryQuantity et de ItemAtIndex. Si ton inventaire est sur plusieurs lignes, tu vas devoir déterminer selon l'index d'un item sur quelle ligne il se trouve (selon le nombre d'items par ligne) Tu me suis ? Je crois que c'est assez de bousin pour un post. Je vais te laisser avancer et expérimenter. N'hésite pas si besoin. Après, l'idée de Kitai est peut-être plus simple : L'idée sera de créer autant d'image dynamiques (DynamicSprite) que tu as d'objets d'inventaire différentes dans ton projet. Ainsi tu t'arrangeras pour que chaque image dynamique corresponde à l'image initiale de l'objet d'inventaire, sur laquelle tu auras ajouté en texte le nombre d'objets de la sorte que possède le joueur.A+ ! |
|
| |
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? Jeu 26 Fév 2015 - 2:02 | |
| InventoryQuantity et de ItemAtIndex, Je crois que j'ai compris le principe. Ca me paraissait cinglé comme méthode (comment deviner ou programmer l'arrivée des objets dans l'inventaire ?!) mais c'est parce que je n'avais pas connaissance de ItemAtIndex. Je vais y réfléchir demain et vient au nouvelle demain soir Merci beaucoup à vous |
|
| |
Contenu sponsorisé
| Sujet: Re: Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? | |
| |
|
| |
| Les calques ? Overlay machin truc ! Quelqu'un pour m'expliquer ? | |
|