Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: musique qui ne se joue pas  (Lu 5381 fois)

0 Membres et 1 Invité sur ce sujet

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
musique qui ne se joue pas
« le: Décembre 22, 2014, 03:27:29 pm »
Bonjour a tous,

Je suis un petit nouveau sur le forum,je commence tout juste avec la sfml,j'arrive a ouvrir une fenêtre,a bouger avec le clavier mais la je tente de mettre de la musique,j'ai suivi le tuto,j'ai regardé sur le net.

Je respecte selon moi comment il faut faire mais la musique ne se lance pas quand la fenêtre est ouverte et je n'ai pas d'erreurs qui s'affiche

 
                sf::music musique;    
                if (!musique.openFromFile("aseri.ogg"))
                        {
                         cout<<"musique non chargé"<<endl;
                        }// erreur
                        musique.play();

 

donc je ne comprend pas bien,j'ai pourtant mis sfml-audio.lib dans le link et les fichiers dans le dossiers de mon exe

merci de votre aide

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #1 le: Décembre 22, 2014, 04:00:27 pm »
Y'a pas assez de code.
Est-ce que ton sf::music est détruit peu après ton play ? Si oui c'est normal que la musique se coupe.

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #2 le: Décembre 22, 2014, 06:12:10 pm »
je vais mettre le code en entier :

                #include <SFML/Graphics.hpp>
                #include <SFML/Audio.hpp>
                #include        <string>
                #include        <iostream>
                #include        <cstdlib>
                #include "Header.h"



                using namespace std;
                        /*sf::Window window;*/
                        sf::RenderWindow window;
                               
                                        sf::Music musique;
                                sf::RectangleShape rect;
                                        int speed=2;
                        void gestion_clavier();

   

                int main()
                {
                                //creation de la fenetre 800x600
       
                                window.create(sf::VideoMode (800,600),"jeu video");
               
                                cout<<"lancement du jeu"<<endl;

                                        window.setFramerateLimit(60);
                                rect=Rect(10,10,30,30);
                       
       
                                //modifier la position
                                window.setPosition(sf::Vector2i(192,0));
                                /*window.setSize(sf::Vector2u(200,100));*/
       
                       

                                //tant que la fenetre est ouverte
                                while (window.isOpen())
                                {
                                                sf::Event event;
                                                //test de evenements
                                                while(window.pollEvent(event))
                                                {
                                               

                                                        //si on clique pour fermer
                                                                if(event.type==sf::Event::Closed)
                                                                                window.close();//on ferme la fenetre
                                                }
                                               
       
                               
                                if (!musique.openFromFile("aseri.ogg"))
                                                        {
                                                                 cout<<"musique non chargé"<<endl;
                                                        }// erreur
                                                musique.play();

                                        //window.draw(cercle);//
                                        //      window.draw(rect);//
                                                window.display();
                       
                                                //sert a effacer le deplacement
                                                window.clear();
               
                                }
                                       

                                return 0;

                }
 

plus le header

sf::RectangleShape Rect(int posX,int posY,int witdh,int height)
{
                //on creer le rectangle
                sf::RectangleShape rect(sf::Vector2f(witdh, height));
                rect.setFillColor(sf::Color(100,200,255));
                rect.setPosition(posX,posY);
                return rect;
}
void gestion_clavier(){

                                //gestion du clavier
                                if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
                                {
                                                rect.move(0,-speed);
                                }
                                else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
                                {
                                                rect.move(0,speed);
                                }
                        else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                                {
                                                rect.move(-speed,0);
                                }
                                else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
                                {
                                                rect.move(speed,0);
                                        }
}
 

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #3 le: Décembre 22, 2014, 06:13:36 pm »
This function starts the stream if it was stopped, resumes it if it was paused, and restarts it from the beginning if it was already playing.
Tu appelles play à chaque frame. ;)
(et n'ouvre la musique qu'une seule fois aussi, pas la peine de le faire à chaque frame non plus)
« Modifié: Décembre 22, 2014, 06:16:17 pm par G. »

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #4 le: Décembre 22, 2014, 06:42:12 pm »
tu le mettrais ou alors car j'ai déjà testé en dehors du while mais sa a pas l'air de fonctionner,ou bien je m'y prend comme un manche(bon je suis débutant donc logique :p)

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re : musique qui ne se joue pas
« Réponse #5 le: Décembre 22, 2014, 07:03:16 pm »
Tu charges ta musique en dehors de ta boucle principale et tu lances la musique aussi à l'extérieure de la boucle. Tu l'entendras une fois mais après à toi de faire en sorte qu'une fois qu'elle est finie elle se relance, il doit y avoir une fonction pour ça ;)

Voici la fonction en question (cf. la documentation)

"La propriété loop détermine si le son ou la musique boucle automatiquement ou non. S'il boucle, il recommencera à zéro dès qu'il se finira, encore et encore jusqu'à ce que vous appeliez explicitement stop. Sinon, il s'arrêtera automatiquement lorsqu'il est fini."
sound.setLoop(true);

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #6 le: Décembre 22, 2014, 07:41:29 pm »
même en le mettant en dehors de la boucle,elle ne part pas,je les placé juste en dessous du int main (),soit c'est le fichier qui est pas lu soit j'ai merdouillé dans les fichier a inclure dans le exe

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re : musique qui ne se joue pas
« Réponse #7 le: Décembre 22, 2014, 07:45:05 pm »
Si le fichier est pas lu alors ça te sortira une erreur.

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #8 le: Décembre 22, 2014, 07:46:42 pm »
oui en effet,ou bien sa vient de mon matériel mais je pense pas,il y a t'il un moyen de savoir si le fichier est lu ou pas?j'ai oublié de dire que j’étais sur visual studio 2012 express
« Modifié: Décembre 22, 2014, 07:48:27 pm par wikan »

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #9 le: Décembre 25, 2014, 10:47:29 am »
Bonjour et joyeux noël

je viens de résoudre le probléme,sa vient de visual studio 2012 qui n'a pas l'air de compiler car j'ai testé avec code block et sa fonctionne.

peut on mettre sfml avec visual studio 2013 par hasard pour voir si cela marche

merci

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re : musique qui ne se joue pas
« Réponse #10 le: Décembre 25, 2014, 11:43:47 am »
Tu peux mettre SFML avec tout, suffit juste de bien le configurer, va voir sur le site tu as un tutoriel ;)

wikan

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : musique qui ne se joue pas
« Réponse #11 le: Décembre 26, 2014, 10:50:39 am »
merci de votre réponse et bonne fête de fin d'année