Warsztat - Programowanie gier

Wrzesień 03, 2010, 04:14:54 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: 1 [2]
  Drukuj  
Autor Wątek: Odtwarzanie MP3  (Przeczytany 1984 razy)
Pawel1503
Sr. Member
****

wiadomości: 276


C++, OGRE, nauka !


Zobacz profil WWW
« Odpowiedz #15 : Styczeń 19, 2010, 11:02:43 »

Wielkie dzięki - już dobrze działa. Tylko mam jeszcze ostatnie pytanie. Mam dźwięk który ilustruje zderzenie. Chciałbym żeby wykonywał się on w przykładowej instrukcji IF:

Kod
if (graczwrog == 1)
{
graczz = graczz + 30;
}
      
I teraz dodam odtwearzanie dźwięku:

Kod
if (graczwrog == 1)
{
//zmienna, do kontroli głośności
  using namespace audiere;
 
   //tworzymy obiekt odwołujący się do urządzenia
   AudioDevicePtr audiodevice(OpenDevice());
   //wgrywamy plik ostatni parametr true, oznacza że nie wczytujemy całego pliku do pamięci.
   OutputStreamPtr st2(OpenSound(audiodevice, "Dzwieki/soundimpress.eu_zderzenie_trzask_081111.mp3",true));
 
   //ustawiamy siłę dźwięku
   st2->setVolume(volume);
   //nie chcemy by track był zapętlony
   st2->setRepeat(false);
   //odtwarzamy
st2->play();
}

I gra się kompiluje i uruchamia ale gdy spełniam ten warunek to gra się spowalnia przez sekundę a dźwięku jak niema - tak nie ma.
Zapisane

Kiedy życie zadaje ci pytanie… Google zna odpowiedź Cheesy
Liosan
SuperHero Member
******

wiadomości: 1506



Zobacz profil
« Odpowiedz #16 : Styczeń 19, 2010, 11:35:59 »

Hm, no spowolnienie to jest dlatego, że wczytujesz plik za każdym razem. Wczytaj go raz, a pod if-em tylko odtwarzaj.

Liosan
Zapisane

Cytuj z: toxic
w ich zylach plynie praslowianska krew - oni musza wiedziec jak sie robi software
Demo WG RC2!
PsichiX
Hero Member
*****

wiadomości: 505


ΨΧΞ


Zobacz profil WWW
« Odpowiedz #17 : Styczeń 19, 2010, 11:36:51 »

bo OutputStreamPtr to wskaznik intelignetny ktory w trakcie zniszczenia swojego obiektu zatrzymuje i usuwa dzwiek, musisz wsadzic te obiekty do kontenera lub jako obiekty globalne.
« Ostatnia zmiana: Styczeń 19, 2010, 11:38:25 wysłane przez PsichiX » Zapisane
Liosan
SuperHero Member
******

wiadomości: 1506



Zobacz profil
« Odpowiedz #18 : Styczeń 19, 2010, 11:40:59 »

Aha, czyli to co ja powiedziałem pomogłoby na obie rzeczy Smiley

Liosan
Zapisane

Cytuj z: toxic
w ich zylach plynie praslowianska krew - oni musza wiedziec jak sie robi software
Demo WG RC2!
Pawel1503
Sr. Member
****

wiadomości: 276


C++, OGRE, nauka !


Zobacz profil WWW
« Odpowiedz #19 : Styczeń 19, 2010, 12:01:34 »

Ok zrobiłem tak jak napisał Liosan.

W funkcji WinMain dałem coś takiego:
Kod
    //zmienna, do kontroli głośności
  using namespace audiere;
 
   //tworzymy obiekt odwołujący się do urządzenia
   AudioDevicePtr audiodevice(OpenDevice());

//wgrywamy plik ostatni parametr true, oznacza że nie wczytujemy całego pliku do pamięci.
   OutputStreamPtr st2(OpenSound(audiodevice, "Dzwieki/soundimpress.eu_zderzenie_trzask_081111.mp3",true));

A w IF:

Kod
if (graczwrog == 1)
{
 
   //ustawiamy siłę dźwięku
   st2->setVolume(volume);
   //nie chcemy by track był zapętlony
   st2->setRepeat(false);
   //odtwarzamy
st2->play();
graczz = graczz + 30;
}

Ale on mi wywala takie błędy:

1>main.cpp(1226): error C2065: 'st2' : undeclared identifier
1>main.cpp(1226): error C2227: left of '->setVolume' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>main.cpp(1228): error C2065: 'st2' : undeclared identifier
1>main.cpp(1228): error C2227: left of '->setRepeat' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>main.cpp(1230): error C2065: 'st2' : undeclared identifier
1>main.cpp(1230): error C2227: left of '->play' must point to class/struct/union/generic type
1>          type is ''unknown-type''
Zapisane

Kiedy życie zadaje ci pytanie… Google zna odpowiedź Cheesy
PsichiX
Hero Member
*****

wiadomości: 505


ΨΧΞ


Zobacz profil WWW
« Odpowiedz #20 : Styczeń 19, 2010, 12:20:38 »

nie widzi obiektow, daj je jako globalne lub wsadz do kontenera (wsadzenie w winmain nie czyni obiektu globalnym).
A using namespace po includzie naglowka audiere.
« Ostatnia zmiana: Styczeń 19, 2010, 12:24:18 wysłane przez PsichiX » Zapisane
Pawel1503
Sr. Member
****

wiadomości: 276


C++, OGRE, nauka !


Zobacz profil WWW
« Odpowiedz #21 : Styczeń 19, 2010, 12:40:32 »

Ok już działa - wielkie dzięki wszystkim za pomoc i pozdrawiam !!!
Zapisane

Kiedy życie zadaje ci pytanie… Google zna odpowiedź Cheesy
Strony: 1 [2]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC