| [résolu]Musique/Volume sonore en pause | |
|
|
Auteur | Message |
---|
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: [résolu]Musique/Volume sonore en pause Dim 24 Jan 2016 - 23:35 | |
| Hello à tous,
voilà je galère depuis quelques jours à essayer toutes les fonctions que je connais en rapport au son et je sèche. J'ai une musique pour chaque room qui tourne en repeat. Lorsque je clique sur la touche "escape" j'ai mon menu "pause" (gPanel) qui apparaît avec mes options ainsi qu'une autre musique.
Hors j'aimerais que lorsque le menu pause apparaisse une autre musique se joue mais en faisant pause sur l'autre et non pas stop. Car pour le moment lorsque je quitte le menu pause j'ai ma musique de la room qui rejoue du début et j'aimerai juste qu'elle continue à jouer là où elle s'était arrêtée lorsque j'ai appuyé sur escape. Suis-je clair? lol
merci d'avance si quelqu'un connait la réponse... _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Dernière édition par adauca le Sam 30 Jan 2016 - 18:39, édité 1 fois |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 1:39 | |
| Salut adauca, Je suppose que tu es sur AGS 3.2 au minimum. Si ce n'est pas le cas, alors ce que je dis ne te concerne pas et j'en suis désolé ! Il n'y a en effet pas de fonctions Pause et Resume sur AGS. C'est dû à la gestion de l'audio dans le logiciel, qui repose sur les canaux. Lorsque tu utilises la commande Play, le morceau est joué sur un canal spécifique. Comme la vie est bien faite, cette commande Play te retourne le canal sur lequel est joué le morceau, de façon à pouvoir le manipuler plus tard (et pouvoir manipuler séparément deux canaux qui joueraient le même morceau simultanément mais en décalé, par exemple). C'est donc en scrutant ce canal que tu vas savoir où en est le morceau au moment d'afficher le menu, et où il faut donc le refaire jouer après. Voici un exemple très schématique de comment tu pourrais procéder : - Code:
-
// En haut du script global, ne rien changer dans ce code AudioChannel* musiqueCanal; AudioClip* musiqueClip; int musiquePosition;
// Fonction à appeler pour mettre la musique de fond en pause, ne rien changer dans ce code function Pause(this AudioChannel*) { if (this == null || !this.IsPlaying) return; musiquePosition = this.Position; // On stocke la position en mémoire musiqueClip = this.PlayingClip; // On stocke le morceau en mémoire this.Stop(); // Puis on arrête la musique }
// Fonction à appeler pour relancer la musique de fond, ne rien changer dans ce code AudioChannel* Resume(this AudioClip*) { if (this == null || musiqueClip == null || this != musiqueClip) return; AudioChannel* tmp = this.Play(); // On relance la musique tmp.Seek(musiquePosition); // Et on la place là où elle s'est arrêtée return tmp; }
// Lorsque tu mets le morceau en pause, // probablement dans un on_key_press (Esc) // Adapte ce code à ton jeu ("aMusiqueDeMenu") function on_key_press(eKeyCode touche) { if (touche == eKeyEscape) { musiqueCanal.Pause(); // Pause aTaMusiqueDeMenu.Play(); // Joue ta musique de menu // reste du code, affichage du GUI, etc. } }
// Lorsque tu reprends le morceau (à la fermeture du GUI) // Place cette ligne où il le faut musiqueCanal = musiqueClip.Resume(); // Continue
// Lorsque tu lances la musique de la pièce, // probablement dans roomLoad dans tes scripts de pièces // Adapte ce code à ton jeu ("aMorceauDeLaPiece") function roomLoad() { musiquePiece = aMorceauDeLaPiece.Play(); // On lance le morceau de 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 19:43 | |
| Merci pour ta réponse Kitai, par contre quand tu écris " musiqueCanal.Pause();", qu'est-ce que tu appelles musiqueCanal? Je dois mettre le canal de la musique que je joue dans ma room? _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 20:03 | |
| Non, comme tu le vois dans le code les trois variables musiqueCanal, musiqueClip et musiquePosition sont définies en haut du script global (et à vrai dire j'ai oublié de préciser qu'il fallait les exporter). En quelque sorte, tu mets déjà le canal de la musique qui joue dans ta room lorsque tu lances celle-ci dans room_Load : la ligne 44 de mon code a pour effet de stocker dans musiqueCanal le canal sur lequel jouera aMorceauDeLaPiece (ce nom-là tu l'adaptes à ton cas). C'est la même logique avec la ligne 37 : lorsque tu reprends la musique (grâce à la fonction Resume qu'on vient de définir) tu restockes à nouveau le canal sur lequel la musique se remet à jouer, pour le cas où tu voudrais à nouveau la mettre en pause plus tard (en appelant musiqueCanal.Pause() à nouveau). Dis-moi si tu veux que je détaille davantage tout ça. Et hésite pas à jeter un oeil à cette page du manuel qui décrit quelques aspects du système de gestion sonore d'AGS. _________________ 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 21:48 | |
| j'avoue ne pas tout à fait comprendre j'ai une erreur:
Failed to save room room4.crm; details below Error (line 10): Undefined token 'musiqueCanal'
_________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 21:51 | |
| ou une autre erreur: Failed to save room room4.crm; details below Error (line 10): '.Pause' is not a public member of 'AudioChannel'. Are you sure you spelt it correctly (remember, capital letters are important)?
_________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 22:00 | |
| En fait je pense ne pas copier les lignes de codes au bon endroit car selon j'ai encore une autre erreur: Failed to save room room1.crm; details below Error (line 50): Must return a 'AudioChannel*' value from function _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 22:05 | |
| La première erreur provient probablement d'un problème d' import/export En bas de ton script global, tu dois ajouter une ligne comme export musiqueCanal, musiqueClip, musiquePosition; et dans le fichier en-tête (header) du script global tu dois avoir ces lignes-là : - Code:
-
import AudioChannel* musiqueCanal; import AudioClip musiqueClip; import int musiquePosition; Si tu désires en plus utiliser la fonction Pause hors du script global (comme tu sembles le faire ici compte tenu le message d'erreur que tu obtiens) tu dois aussi importer cette fonction dans l'en-tête. Et j'imagine que tu voudras aussi importer Resume du coup : - Code:
-
import function Pause(this AudioChannel*); import AudioChannel* Resume(this AudioClip*); Tu as besoin d'importer tout ça parce que tu le définis dans le script global et que tu veux l'utiliser dans la pièce. Alternativement tu pourrais aussi directement définir tout ça dans le script global pour éviter de l'importer par la suite, mais j'imagine que tu veux pouvoir utiliser cette fonctionnalité quelle que soit la pièce où se trouve le personnage. _________________ 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 22:52 | |
| Je comprends l'idée mais j'ai toujours un message d'erreur...
Failed to save room room4.crm; details below Undefined token 'musiqueCanal'
toujours ce musiqueCanal qui pose problème... _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 23:07 | |
| Je suis désolé mais je comprends rien en fait... Je pense placer au bon endroit les scripts mais toujours une erreur sur une ligne ou une autre... _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Lun 25 Jan 2016 - 23:39 | |
| C'est moi, j'ai mal expliqué ce qu'il y avait à faire. Je te montre ce que tu devrais avoir dans chaque fichier script. En-tête (header, voir image en spoiler ici) du Script Global : - Code:
-
import AudioChannel* musiqueCanal; import AudioClip* musiqueClip; import int musiquePosition; import function Pause(this AudioChannel*); import AudioChannel* Resume(this AudioClip*); Corps du Script Global (tout en haut) : - Code:
-
// En haut du script global, ne rien changer dans ce code AudioChannel* musiqueCanal; AudioClip* musiqueClip; int musiquePosition; // Fonction à appeler pour mettre la musique de fond en pause, ne rien changer dans ce code function Pause(this AudioChannel*) { if (this == null || !this.IsPlaying) return; musiquePosition = this.Position; // On stocke la position en mémoire musiqueClip = this.PlayingClip; // On stocke le morceau en mémoire this.Stop(); // Puis on arrête la musique } // Fonction à appeler pour relancer la musique de fond, ne rien changer dans ce code AudioChannel* Resume(this AudioClip*) { if (this == null || musiqueClip == null || this != musiqueClip) return null; AudioChannel* tmp = this.Play(); // On relance la musique tmp.Seek(musiquePosition); // Et on la place là où elle s'est arrêtée return tmp; } Corps du Script Global (tout en bas) : - Code:
-
export musiqueCanal, musiqueClip, musiquePosition; Dans chaque script de pièce, là où tu veux lancer la musique de fond (probablement dans room_onLoad ; remplace aLeNomDeLaMusiqueDeFond par le clip voulu dans chaque pièce) : - Code:
-
musiqueCanal = aLeNomDeLaMusiqueDeFond.Play(); Là où tu veux mettre la musique de fond en pause (là où tu affiches ton menu et avant de lancer la musique de menu) : - Code:
-
musiqueCanal.Pause(); Là où tu veux relancer la musique précédemment en pause (là où tu fais disparaître ton menu) : - Code:
-
musiqueCanal = musiqueClip.Resume(); _________________ 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 !
Dernière édition par Kitai le Ven 29 Jan 2016 - 23:37, édité 2 fois |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 20:37 | |
| Dhaa j'ai encore une erreur avec AudioClip* musiqueClip; dans le global script
Attributes of identifier do not match prototype
_________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 20:55 | |
| Ah zut, excuse-moi adauca, j'ai oublié l'astérisque dans l'import dans l'en-tête. J'ai réparé l'erreur maintenant. _________________ 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 21:02 | |
| Ok pour ça, super, mais par contre tu vas me maudire mais du coup j'ai une erreur sur cette ligne: if (this == null || musiqueClip == null || this != musiqueClip) return; Error : Must return a 'AudioChannel*' value from function _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 21:22 | |
| Oups, c'est toi qui devrais me maudire, je te donne du code pas testé ! Essaie en remplaçant return; par return null; _________________ 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 22:10 | |
| Bon alors déjà plus d'erreur lol on est pas mal. Par contre ma musique de ma pièce recommence à chaque fois et ne fait pas pause... _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 22:30 | |
| Haha OK, j'arrête de faire mon fainéant et je teste sérieusement de ce pas. _________________ 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 ! |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Ven 29 Jan 2016 - 23:48 | |
| Bien je viens de tester et pour moi ça fonctionne bien. 1) Est-ce que tu utilises bien musiqueCanal.Pause() pour mettre ta musique en pause sans utiliser la commande Stop ? 2) Est-ce que tu utilises bien musiqueClip.Resume() pour reprendre la lecture de la musique précédemment mise en pause sans utiliser la commande Play ? 3) Quel est le format de ton fichier de musique ? MP3, OGG, WAV, MIDI ? EDIT : Voilà comment je l'utilise ( Freak Chic est mon projet test !) - Code:
-
function Button26_OnClick(GUIControl *control, MouseButton button) { musiqueCanal.Pause(); a4_Vouivre.Play(); Display("FREAK CHIC - un jeu réalisé avec Adventure Games Studio (moteur créé par Chris Jones)"); Display("Conçu dans le cadre du MAGS de novembre 2015"); Display("Jeu collaboratif réalisé par les membres du forum AGS francophone - http://adventuregamestudio.fr"); Display("Idée de départ : Théo"); Display("Chef de projet : Atavismus"); Display("Character design : Shai-la"); Display("Codage : Shai-la, Kitai, Yo Riso"); Display("Graphismes : Yo Riso, Hanakin, "); Display("Animations : Yo Riso, Creamy, "); Display("Participation aux backgrounds : Billbis"); Display("Scénario : collectif"); Display("Musiques : Alex"); Display("Sons : Yo Riso"); Display("Assistance : Valoulef, Thebroch"); Display("Bêta-testeurs : Bruno (Nesforum), Frog (InsertDisk2), Metalgear2 (MSXVillage), mikedafunk (amiga impact), Samuel (system-cfg), Youpla (grospixel)"); musiqueCanal = musiqueClip.Resume(); } _________________ 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 !
Dernière édition par Kitai le Mar 14 Mar 2017 - 21:06, édité 1 fois |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Sam 30 Jan 2016 - 18:10 | |
| Bon après une bonne nuit de sommeil j'ai compris mes erreurs et ton code fonctionne effectivement super bien. Par contre (et oui encore un petit problème à résoudre avant la perfection) avec ce code en place j'ai mes musiques des rooms qui se mettent en pause lorsque mon gpanel s'affiche et continuent là ou elles s'étaient arrêté lorsque je quitte le gpanel. Et pour tout ça je te dis un grand merci et je crie au génie après tous ces échanges Mais (le voilà ce fameux "mais") je n'ai aucune musique dans mon menu (gpanel) et lorsque j'essaye de mettre une musique en play sur ma touche escape ça plante... Je pense que mon problème est en rapport au canal qui est en pause mais comment faire alors? _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [résolu]Musique/Volume sonore en pause Sam 30 Jan 2016 - 18:29 | |
| Content qu'on ait réussi à faire fonctionner tout ça au final ! C'est une bonne leçon pour moi : je nous aurais épargné bien des complications si j'avais testé mon code dès le début. - adauca a écrit:
- Mais (le voilà ce fameux "mais") je n'ai aucune musique dans mon menu (gpanel) et lorsque j'essaye de mettre une musique en play sur ma touche escape ça plante... Je pense que mon problème est en rapport au canal qui est en pause mais comment faire alors?
C'est intentionnel que tu n'aies pas de musique dans ton menu ? Ou bien ça constitue un problème ? Le canal n'est pas vraiment en pause, et c'est bien pour ça qu'il y a tout ce code. Ce qui se passe en réalité, c'est que le canal est totalement libéré lorsque tu utilises la commande Pause et la musique est relancée (possiblement sur un autre canal, ou pas) lorsque tu utilises la commande Resume. Qu'est-ce que tu veux dire par "mettre une musique en play sur ta touche espace" ? Tu utilises une commande Play dans la fonction on_key_press ? _________________ 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 ! |
|
| |
adauca Adepte de la Grande Tasse Bleue
Nombre de messages : 151
Age : 42
Localisation : Strasbourg
Date d'inscription : 10/02/2014
| Sujet: Re: [résolu]Musique/Volume sonore en pause Sam 30 Jan 2016 - 18:36 | |
| Nan j'ai rien dit, tout est OK! Et bien voilà j'y suis arrivé, ENFIN! Encore merci Kitai pour ce dévouement et cette patience!
J'ai déjà vu un autre bug cela dit je vais ouvrir un autre sujet de ce pas mdr _________________ Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
|
|
| |
Contenu sponsorisé
| Sujet: Re: [résolu]Musique/Volume sonore en pause | |
| |
|
| |
| [résolu]Musique/Volume sonore en pause | |
|