C++ audiere , problem z zatrzymanie i wznowieniem utworu

C++ audiere , problem z zatrzymanie i wznowieniem utworu
LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Witam! Postanowiłem dziś pobawić się biblioteką Audiere. Chciałem zrobić przycisk za pomocą którego mogę zatrzymać/wznowić utwór. Niestety aby zatrzymać utwór muszę mieć ciągle wciśnięty klawisz myszy na guziku. Co robię nie tak?
Dodam, że klawisz i parę innych drobiazgów jest pisane w allegro.

Kopiuj
 bool play = false;

if (mx >= 20 && mx <= 180 && my >= 280 && my <= 390 && mb == 1)
{
    if( !play )
    {
       st->play();
        play = true;
    }
} else
{
    st->stop();
    play = false;
}
LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Problem rozwiązany.

Kopiuj
 if( key[KEY_Q])
                        if(st2->isPlaying()==true)
                         {
                                             st2-> stop();
                                             }
                                             else
                                              {
                                                  st2 -> play();
                                                  }      

i

Problem jest za to z kliknięciem. Trzeba na przycisk kliknac szybko i delikatnie zeby sie ladnie zatrzymal, inaczej sie zawiesza..

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
0

Problem jest najprawdopodobniej w tym, że zmiana stanu odtwarzania wywoływana jest za każdym obrotem głównej pętli kiedy przycisk jest wciśnięty. Rozwiązaniem, jeżeli allegro nie ma gotowych funkcji, jest przechowywanie stanu przycisku w poprzednim obrocie pętli. Jeżeli się zmienił (z 1 na 0 lub na odwrót, zależy jak ma przycisk działać) to wywołaj kod, który ma być po kliknięciu.

FE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
Kopiuj
bool kk;
st->play();

//petla

if(mb==0)
{
play=false;
} 


if (mx >= 20 && mx <= 180 && my >= 280 && my <= 390 && mb == 1 && play==false && kk==true)
{
       st->play();
       play=true;
       kk=false;
} 

if (mx >= 20 && mx <= 180 && my >= 280 && my <= 390 && mb == 1 && play==false && kk==false)
{
    st->stop();
    play=true;
    kk=true;
}

nie jestem pewny czy zadziała, wrazie czego pisz na pw

LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

@ferdzio
śmiga jak ta lala. Podziękować!.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.