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

Auteur Sujet: problème de lancement du sons quand lancer depuis un Objet  (Lu 9678 fois)

0 Membres et 2 Invités sur ce sujet

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
problème de lancement du sons quand lancer depuis un Objet
« le: Octobre 04, 2014, 10:15:34 pm »
Bonjour, j'ai un de sons qui veut pas lancer depuis un Objet.
le programme compile normalement mais quand dans le programme, le son doit etre joué, j'ai un message d'erreur dans la console qui dit :

An internal OpenAl call failed in Sound.cpp (73) : AL_INVALID_NAME, an unaceeptable name has been specified.

Comment faire pour résoudre le problème?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #1 le: Octobre 04, 2014, 10:38:36 pm »
Et qu'est-ce qu'on est censé pouvoir te répondre avec si peu d'informations ?
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #2 le: Octobre 04, 2014, 10:51:56 pm »
tu veux quoi comme information?

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #3 le: Octobre 04, 2014, 10:58:38 pm »
le header de ma classe Arme
class Arme
{
protetected:

sf::Sound m_sonArme;
sf::SoundBuffer m_bruitArme;
public:
void tirer();
 

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #4 le: Octobre 04, 2014, 11:25:30 pm »
une chose que je comprend pas.
j'ai fait une classe Personnage et une classe Arme (pistolet).

quand je lance ma méthode tirer de la classe Arme ex:
revolver.tirer();
 
le son ce lance parfaitement.
quand j'utilise une pointeur pour que le personnage utilise l'arme, la fonction fonctionne mais pas le son.

le header de ma classe personnage est :
class Personnage:
{
protected:
Arme *m_arme;
public:
void tirerAvecArme();
 

le fichier source de ma classe Personnage est :
void Personnage::tirerAvecArme()
{
m_arme->tirer();
std::cout << "le cout fonctionne le message s'affiche bien mais pas le son j'ai l'erreur précédent citer qui apparait " << std::endl;
}
 
« Modifié: Octobre 04, 2014, 11:27:35 pm par remi200 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #5 le: Octobre 05, 2014, 09:14:02 am »
C'est toujours insuffisant. Là on n'a que des déclarations et des bribes de functions qui ne font qu'appeler d'autres fonctions. Il est évident qu'il n'y a aucune erreur dans ce que tu nous montres.

Il faut que tu écrives un code complet et minimal qui reproduit le problème.

http://sscce.org/
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #6 le: Octobre 05, 2014, 10:32:10 am »
le Header de ma classe Arme au complet:

#ifndef ARME_H_INCLUDED
#define ARME_H_INCLUDED

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

#include "Behavior.h"

class Arme : public Behavior
{
protected:
    std::string m_noms;
    sf::Sound m_sonArme;
    sf::SoundBuffer m_bruitArme;

public:
    Arme();
    void tirer();

};

#endif // ARME_H_INCLUDED

 

le fichier source de ma Clase Arme:

#include <iostream>

#include "Arme.h"

using namespace sf;

Arme::Arme()
{
    m_bruitArme.loadFromFile("sons/bruitage/gunshot5.wav");
    m_sonArme.setBuffer(m_bruitArme);
    std::cout << "chargement son dans objet " << std::endl;

}

void Arme::tirer()
{
    std::cout << "le pistolet a tirer " << std::endl;
    m_sonArme.play();
}


 

et ma fonction ecranJeux :
#include <iostream>
#include <SFML/Graphics.hpp>

#include "ecranJeux.h"
#include "../Class/Behavior.h"
#include "../Class/Personnage.h"
#include "../Class/CurseurSouris.h"
#include "../Class/Arme.h"

using namespace sf;

int ecranJeux()
{
    //creation de la la fenetre fenetreJeux
    RenderWindow fenetreJeux(VideoMode(1280,720),"Aventureland");

    // chargement des texture
    Texture viseurPistoler;
    viseurPistoler.loadFromFile("images/sprite/viseur.png");
    viseurPistoler.setSmooth(true);

    // chargement des BufferSon



    // création des objet et parametrage
    Arme pistolet;

    Personnage jrod;
    jrod.setArme(pistolet);

    CurseurSouris viseur;
    viseur.setTexture(viseurPistoler);
    viseur.setOrigin(37, 37);
    viseur.setColor(Color::Red);


    //creation de objet evenement
    Event event;
    while(fenetreJeux.isOpen())
    {

        while(fenetreJeux.pollEvent(event))
        {
            switch(event.type)
            {
            case Event::Closed:
                fenetreJeux.close();
                break;
            case Event::MouseMoved:
                viseur.updatePosition(fenetreJeux);
            case Event::MouseButtonPressed:
                if(event.mouseButton.button == Mouse::Left)
                    pistolet.tirer();
                if(event.mouseButton.button == Mouse::Right)
                    jrod.tirerAvecArme();

            default :
                break;
            }

        }
       

        fenetreJeux.clear(Color::Blue);
        fenetreJeux.draw(viseur);
        fenetreJeux.display();
    }


    return 0;
}

 
le ficher source de ma classe Personnage :
void Personnage::tirerAvecArme()
{
    std::cout << "le personnage va essayer de tirer " << std::endl;
    m_arme->tirer();
}
 

le header complet de ma classe Personnage :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <string>

#include "Behavior.h"
#include "Arme.h"

class Personnage : public Behavior
{
protected:
    std::string m_noms;
    Arme *m_arme;
public:
    Personnage();
    void setArme(Arme seletionArme);
    void tirerAvecArme();

 


};

#endif // PERSONNAGE_H_INCLUDED

 

Si il manque des élément dit lequel, je vous les fournirait .
quand je clic directement avec le clic gauche de la souris tout passe comme prévu mais pas avec le clic droit.
« Modifié: Octobre 05, 2014, 03:59:39 pm par remi200 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #7 le: Octobre 05, 2014, 11:10:56 am »
Tu as lu le lien que je t'ai donné ? ...
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #8 le: Octobre 05, 2014, 11:23:48 am »
non, pas encore.
je vais le lire.
t'as reperer le problème?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #9 le: Octobre 05, 2014, 02:16:14 pm »
Tu étais censé le lire avant de poster du code... Donc non, je n'ai pas encore regardé, y a trop de code sans rapport avec le problème.
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #10 le: Octobre 05, 2014, 03:56:06 pm »
j'ai lu le liens que tu ma envoyer.
j'ai modifier quelque ligne de code qui n'avait aucun rapport avec le problème.

j'espere que tu trouvera une solution. vu moi je comprend pas, la méthode marche dans les deux cas, je les tester avec un cout. mais le son veux pas lancer avec jrod.tirerAvecArme(); la fonction marche mais le son ne se joue pas et j'ai un message d'erreur dans la console qui dit :

An internal OpenAL call failed in Sound.cpp (73) : AL_INVALID_NAME, an uncacceptable name has been specified

pas contre avec pistolet.tirer(); ça marche();

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #11 le: Octobre 05, 2014, 10:18:38 pm »
Tu fais une copie de Arme dans Personnage::setArme. Mais ta classe Arme n'implémente pas de constructeur par copie, et celui généré par défaut par le compilateur n'est pas correct dans ce cas.
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #12 le: Octobre 06, 2014, 12:10:07 am »
j'ai modifier la méthode Personnage::setArme
comme ceci :

void Personnage::setArme(Arme &selectionArme)
{
    m_arme = &selectionArme;
}
 

ça marche.
Merci pour votre aide.

remarque: j'ai remarquer que quand je froller le viseur (souris) au bord gauche de ma fenêtre, l'arme se déclencher automatiquement sans appuie sur les bouton de la souris.
Comment cela ce fait ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #13 le: Octobre 06, 2014, 08:12:43 am »
Citer
ça marche.
Tu n'as fait que contourner le problème. Il réapparaîtra à la prochaine copie d'une instance de la classe Arme, puisque le constructeur par copie de celle-ci n'est toujours pas correct (ou désactivé).

Citer
remarque: j'ai remarquer que quand je froller le viseur (souris) au bord gauche de ma fenêtre, l'arme se déclencher automatiquement sans appuie sur les bouton de la souris.
Comment cela ce fait ?
Tu as oublié des "break" dans le switch de ta boucle d'évènements.

N'hésite pas à utiliser ton debugger, c'est fait pour ça ;)
Laurent Gomila - SFML developer

remi200

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : problème de lancement du sons quand lancer depuis un Objet
« Réponse #14 le: Octobre 06, 2014, 11:33:52 am »
comment faire un constructeur de copie?
serait pas t-il plus judicieux d'envoyer en paramètre les référence de objet?

j'ai rajouter le "break" qui manqué. mon arme ne tire pu tout seul.
« Modifié: Octobre 06, 2014, 11:42:49 am par remi200 »