Spanish Sonido interrumpido

Dragobyte

Member
Licensed User
Longtime User
Hola, llevo poco tiempo con el B4A. Quería preguntar sobre el siguiente caso:
He hecho una sencilla aplicación de sonajero para bebés. He puesto 7 botones que cada uno al pulsar carga y hace sonar un sonido diferente.

MP.Initialize
MP.Load(File.DirAssets, "son1b.mp3")
MP.play

Y funciona. El problema es que al pulsar rápidamente los botones repetidamente y cambiando de uno a otro (como hace un niño) se corta el sonido y ya no suena ningún botón al pulsarse.

¿Qué puedo hacer para arreglar esto?
Muchas gracias por adelantado
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

En vez de hacer :
MP.Initialize
MP.Load(File.DirAssets, "son1b.mp3")
MP.play

Haz esto:
B4X:
Sub Globals
Dim SonidoAcabado as Boolean
....
.....
....

Sub Activity_Create(FirstTime As Boolean)
  MP.Initialize2 ("EventoSonido")
  FlagSonidoAcabado = True
  ....
  .....


Sub Button1_Click
   ' este puede ser cualquiera de tus botones
   if FlagSonidoAcabado = false Then Return

   FlagSonidoAcabado = false
   MP.Load(File.DirAssets, "son1b.mp3")
   MP.Looping = False
   MP.play
End Sub

Sub EventoSonido_Complete
   Log("EventoSonido_Complete")     
   FlagSonidoAcabado = true
End Sub

Tambien puedes desabilitar los botones hasta que se cumpla el EventoSonido_Complete

Saludos
 

Dragobyte

Member
Licensed User
Longtime User
Hola

En vez de hacer :


Haz esto:
B4X:
Sub Globals
Dim SonidoAcabado as Boolean
....
.....
....

Sub Activity_Create(FirstTime As Boolean)
  MP.Initialize2 ("EventoSonido")
  FlagSonidoAcabado = True
  ....
  .....


Sub Button1_Click
   ' este puede ser cualquiera de tus botones
   if FlagSonidoAcabado = false Then Return

   FlagSonidoAcabado = false
   MP.Load(File.DirAssets, "son1b.mp3")
   MP.Looping = False
   MP.play
End Sub

Sub EventoSonido_Complete
   Log("EventoSonido_Complete")    
   FlagSonidoAcabado = true
End Sub

Tambien puedes desabilitar los botones hasta que se cumpla el EventoSonido_Complete

Saludos
Hola, gracias. Quería preguntarte si FlagSonidoAcabado es SonidoAcabado.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Si, perdona, en la declaracion le puse Falg para saber que era quien avisaba y luego lo escribi mal :oops:

Saludos
 
Top