C++ audiere , problem z zatrzymanie i wznowieniem utworu

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.

 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;
}
0

Problem rozwiązany.

 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..

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.

0
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

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1