Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[allegro] sample

Ostatnio zmodyfikowano 2009-05-07 21:57
Autor Wiadomość
driver1995
Temat założony przez niniejszego użytkownika
[allegro] sample
» 2009-05-05 17:40:43
Witam...
Mam taki problem z allegro, a dokładniej z piosenką, którą chcę odtwarzać...
C/C++
int main()
{
    allegro_init();
    install_keyboard();
    install_mouse();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0 );
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 255, 255 );
    intro();
    adjust_sample( behemoth, 60, 127, 1000, 1 );
    do {
        MainMenu();
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
    } while( !key[ KEY_ESC ] );
   
    stop_sample( behemoth );
    destroy_bitmap( CrazyRace );
    destroy_bitmap( KG );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
play_sample() jest w  funkcji intro() jakby co... Problem tkwi w tym, że jest tak: włącza się program, jest wszystko ok... Przechodzi funckja intro (trwa 31 sec) sample behemoth się ścisza (wcześniej ma głośność 255, teraz 60), robi się pętla do (pokazuje się MainMenu)... no i spoko, ale po pewnym czasie (main menu wyświetlone, muzyka gra) muzyka przestaje grać, albo wyłącza się program ;/ ;/ ;/ O co kaman? Czemu tak się dzieje? Jak to naprawić? Może to wina tego, że ta piosenka ma 45 MB?

PS. Jeszcze przy okazji: da się jakoś wczytywać format piosenek mp3 zamiast wav ???
P-6529
DejaVu
» 2009-05-05 18:06:20
W tym programie, który przedstawiłeś nie widzę szans na to, żeby się on zamknął sam nawet i po dwóch dniach od uruchomienia :) Rozmiar nagrania wpływa tylko i wyłącznie na czas jego ładowania. Jeśli jednak jest on odtwarzany już to nie widzę żadnego logicznego wyjaśnienia faktu, iż program Ci się sam zamyka. (chyba, że nie o tym pisałeś i źle Ciebie zrozumiałem :P)

Obsługa mp3:
Za pomocą innej biblioteki - tak. Być może istnieje jakieś rozszerzenie do allegro, które wspiera również format mp3, jednak to trzeba pogooglać.

/edit:
Jeśli program się wywala to funkcja MainMenu() prawdopodobnie zżera wszystkie zasoby komputera (nie zwalnia zasobów).

P-6531
driver1995
Temat założony przez niniejszego użytkownika
» 2009-05-05 18:32:35
On się nie ma sam zamykać, tylko jak się naciśnie ESC... A z tym zamykaniem sie samemu chodziło mi o to że po chwili wywala windowsowy błąd: program przestał działać... Co do MainMenu() to nie wiem, nie znam się, ale czy to:
C/C++
void MainMenu()
{
    masked_blit( MenTlo, bufor, 0, 0, 0, 0, 800, 600 );
}
może pożerać całą pamięć?
P-6536
WunM
» 2009-05-05 18:35:48
Nie powinno pożerać pamięci, gdyż obrazek zajmuje tyle ile zajmuje (nawet jak się go powiększy w Allegro), a to co na ekranie jest wyświetlane też nie powinno pożerać dużo pamięci.
P-6539
DejaVu
» 2009-05-05 18:38:40
/edit:
zaraz poprawię posta

/edit2:
Co to za wskaźniki i gdzie są one użyte w programie?
C/C++
destroy_bitmap( CrazyRace );
destroy_bitmap( KG );
P-6540
driver1995
Temat założony przez niniejszego użytkownika
» 2009-05-05 18:38:53
No więc w takim razie dlaczego mi się ta piosenka przerywa? I dlaczego akurat piosenka a nie np. obrazek (znika)????

//edit: @up - to jest usuwanie bitmap... A bitmapy są w funkcji intro() i przed całem mainem(deklaracja)...
P-6541
DejaVu
» 2009-05-07 16:30:33
A gdzie masz ich wczytanie? Jeśli wskaźnik będzie zły, aplikacja po wciśnięciu ESC pójdzie w kosmos -> czytaj: wywali się.
P-6624
driver1995
Temat założony przez niniejszego użytkownika
» 2009-05-07 17:22:32
No właśnie w funkcji intro() jest...
P-6625
« 1 » 2
  Strona 1 z 2 Następna strona