tompibed Temat założony przez niniejszego użytkownika |
[ALLEGRO 5] Dźwięk » 2012-10-13 13:53:46 Witam, mam problem, zrobiłem dźwięk aby działał jak naciśniemy przykładowo klawisz UP, i tu pojawia się problem, gdy wciśniemy klawisz DOWN chciałbym, aby dźwięk się zatrzymał i odtwarzał się inny. Proszę bardzo o pomoc wraz z lekkim wytłumaczeniem tego ewentualnego przykładu. Z góry dzięki. Oto mój kod ALLEGRO_SAMPLE * dzwiek = al_load_sample( "sound/1.wav" ); ALLEGRO_SAMPLE * dzwiek2 = al_load_sample( "sound/2.wav" );
ALLEGRO_SAMPLE_ID SampleID;
if( ALLEGRO_KEY_UP ) { y -= moveSpeed; al_play_sample( dzwiek, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, & SampleID ); } else if( ALLEGRO_KEY_DOWN ) { al_stop_sample( & SampleID ); y += moveSpeed; al_play_sample( dzwiek2, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, & SampleID ); }
|
|
SeaMonster131 |
» 2012-10-13 14:05:32 al_stop_sample( & SampleID ); y += moveSpeed; al_play_sample( dzwiek2, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, & SampleID );
Zatrzymujesz sample o id SampleID, a później odtwarzasz dźwięk o id SampleID. Niech 'dzwiek' ma swoje ID, a 'dzwiek2' niech ma swoje, inne ID. To będzie chyba najprostsze rozwiązanie. |
|
tompibed Temat założony przez niniejszego użytkownika |
» 2012-10-13 14:30:25 Dobra rozumiem to co napisałem, lecz mi to nie działa, zrobiłem (tak mi się wydaje) tak jak napisałeś, czyli odtwarzam 'dzwiek' o jakims ID (SampleID) i chcę go zatrzymać, jednak nie mam pojęcia czemu to nie działa skoro sie kompiluje, wyskakuje błąd gdy wcisnę klawisz, który ma kończyc odtwarzanie dzwieku.
Błędy:
w konsoli taka treść: "assertion failed: spl_id->_id!=-1, file allegro-5.0.x\addons\audio\kcm_sample.c, line 381"
Okienko: R6010 -abort() has been called
przerwij ponów próbę ignoruj
Ja niestety nie znajduję żadnego wytłumaczenia na to dziwne zachowanie. Proszę jeszcze raz o pomoc |
|
SeaMonster131 |
» 2012-10-13 14:47:05 Nie wiem czy pomoże, lecz spróbuj tak zrobić: ALLEGRO_SAMPLE_ID * SampleID_1, * SampleID_2;
if( ALLEGRO_KEY_UP ) { al_stop_sample( SampleID_2 ); y -= moveSpeed; al_play_sample( dzwiek, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, SampleID_1 ); } else if( ALLEGRO_KEY_DOWN ) { al_stop_sample( SampleID_1 ); y += moveSpeed; al_play_sample( dzwiek2, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, SampleID_2 ); }
? |
|
tompibed Temat założony przez niniejszego użytkownika |
» 2012-10-13 14:55:35 Niestety, przy kompilacji ostrzeżenia z taką treścią " The variable 'SampleID2' is being used without being initialized.", teraz gdy wcisnę jakiś klawisz dźwiek nawet się nie uruchamia i program się od razu wyłącza :/
|
|
tompibed Temat założony przez niniejszego użytkownika |
» 2012-10-13 15:43:37 Dałem sobie jakoś radę, wystarczyło napisać:
al_stop_samples();
generalnie nie wiem czy to powinno tak być, ale działa, dzięki wszystkim za pomoc :) |
|
« 1 » |