Problem z dźwiękiem [SFML]
Ostatnio zmodyfikowano 2017-12-04 18:33
dominator Temat założony przez niniejszego użytkownika  | 
Problem z dźwiękiem [SFML] » 2017-12-03 13:27:09 Witam od kilku miesięcy ucze się programować w c++.  Jestem mocno zmotywowany do nauki, ponieważ  bardzo chciałbym napisać gre w którą mogli by grać niewidomi.  Zacząłem pisać mój projekt kożystając z sfml 2.0 i kiedy rozpocząłem dodawanie kilku obiektów do gry pojawił się problem z dźwiękiem, a mianowicie pierwsze obiekty go posiadają ale następne już nie do tego pojawia się komunikat: An internal OpenAL call failed in SoundSource.cpp (65) : AL_INVALID_NAME, an unacceptable name has been specified. Udało mi się odrobine zminimalizować problem kiedy obiekt klasy sf::Sound dynamicznie alokowałem, ale tylko kilka obiektów więcej ma teraz dźwięki, co nie rozwiązuje mojego problemu. Prosze o pomoc poniżej daje kod jednego z obiektów prośba  również o wyrozumiałość zdaje sobie sprawe że mój kod pozostawia wiele do życzenia. class clekka_zbroja     : public cprzedmioty { public:               clekka_zbroja( double wx, double wy )     {         soundwolacz[ 0 ] = new sf::Sound;         for( int i = 0; i < 1; ++i )              soundwolacz[ i ]->setBuffer( bufferwolacz[ i ] );                  for( int i = 0; i < 10; ++i )         {             bufferpodnoszezbroje[ i ] = new sf::SoundBuffer;             bufferzakladamzbroje[ i ] = new sf::SoundBuffer;             bufferzdejmujezbroje[ i ] = new sf::SoundBuffer;             soundpodnoszezbroje[ i ] = new sf::Sound;             soundzakladamzbroje[ i ] = new sf::Sound;             soundzdejmujezbroje[ i ] = new sf::Sound;         }         nazwa = "lekka zbroja";         x = wx; y = wy;         typprzedmiot = 1;         typfizyczne = true;         typlodowe = true;                  ochronafizyczne = 20;         ochronalodowe = 80;                                                               if( !bufferpodnoszezbroje[ 0 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//podnosze1.wav" ) )              ochronalodowe = 80;                  if( !bufferpodnoszezbroje[ 1 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//podnosze2.wav" ) )              ochronalodowe = 80;                           if( !bufferzakladamzbroje[ 0 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//zakladam1.wav" ) )              ochronalodowe = 80;                  if( !bufferzakladamzbroje[ 1 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//zakladam2.wav" ) )              ochronalodowe = 80;                           if( !bufferzdejmujezbroje[ 0 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//zdejmuje1.wav" ) )              ochronalodowe = 80;                  if( !bufferzdejmujezbroje[ 1 ]->loadFromFile( "data//dzwieki//przedmioty//zbroje//zdejmuje2.wav" ) )              ochronalodowe = 80;                  for( int i = 0; i < 2; ++i )              soundpodnoszezbroje[ i ]->setBuffer( * bufferpodnoszezbroje[ i ] );                  for( int i = 0; i < 2; ++i )              soundzakladamzbroje[ i ]->setBuffer( * bufferzakladamzbroje[ i ] );                  for( int i = 0; i < 2; ++i )              soundzdejmujezbroje[ i ]->setBuffer( * bufferzdejmujezbroje[ i ] );              }     int lezy_przedmiot()     {                  soundwolacz[ 0 ]->setPosition( x, 0, y );                  soundwolacz[ 0 ]->setRelativeToListener( false );                           soundwolacz[ 0 ]->setMinDistance( 100 );         soundwolacz[ 0 ]->setAttenuation( 10 );                  if( clock.getElapsedTime().asSeconds() >= 3 )         {             soundwolacz[ 0 ]->play();             clock.restart();         }     }          int podniesc_przedmiot()     {                           soundpodnoszezbroje[ 0 ]->setRelativeToListener( true );                                                               if( clockr.getElapsedTime().asSeconds() >= 3 )         {             soundpodnoszezbroje[ 0 ]->play();             clockr.restart();                      }     }          int wyjmij_przedmiot()     {         soundzakladamzbroje[ 0 ]->setRelativeToListener( true );         soundzakladamzbroje[ 0 ]->play();     }          int schowaj_przedmiot()     {         soundzdejmujezbroje[ 0 ]->setRelativeToListener( true );         soundzdejmujezbroje[ 0 ]->play();                  return 0;     }                                   ~clekka_zbroja()     {         for( int i = 0; i < 10; ++i )         {             delete bufferpodnoszezbroje[ i ];             delete bufferzakladamzbroje[ i ];             delete bufferzdejmujezbroje[ i ];             delete soundpodnoszezbroje[ i ];             delete soundzakladamzbroje[ i ];             delete soundzdejmujezbroje[ i ];         }         delete soundwolacz[ 0 ];              }                     }; [ / i ]  | 
 | 
RazzorFlame  | 
» 2017-12-03 13:35:50 Daj kod między  [ cpp] i  [ /cpp] (bez spacji) Otrzymasz taki efekt i łatwiej będzie Ci pomóc.  | 
 | 
j23  | 
» 2017-12-03 18:39:44 Dlaczego slashe w ścieżkach dajesz podwójnie?   | 
 | 
dominator Temat założony przez niniejszego użytkownika  | 
» 2017-12-04 17:29:03 shashe sa podwójne w ścieżkach ,ponieważ takk się nauczyłem z poradnika.  | 
 | 
j23  | 
» 2017-12-04 18:33:59 W takim razie ten poradnik jest do d..y. Slashy (/) nie musisz dawać podwójnie, bo to zwykły znak. Podwójnie dajesz backslashe (\), ponieważ w literale znakowym/tekstowym jest to znak specjalny (tzw. escape character). Czyli w windowsowych ścieżkach ukośniki dajesz podwójnie, w uniksowych - nie.  | 
 | 
|  « 1 »  |