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

[ALLEGRO 5] Dźwięk

Ostatnio zmodyfikowano 2012-10-13 15:43
Autor Wiadomość
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

C/C++
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 );
}
P-66743
SeaMonster131
» 2012-10-13 14:05:32
C/C++
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.
P-66744
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
P-66745
SeaMonster131
» 2012-10-13 14:47:05
Nie wiem czy pomoże, lecz spróbuj tak zrobić:
C/C++
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 );
}
?
P-66746
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 :/
P-66748
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 :)
P-66753
« 1 »
  Strona 1 z 1