Autor Tema: ¿como ·play_wav··· una vez?  (Leído 1233 veces)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2863
  • Karma: 34
  • Superviviente marciano
    • futublock
¿como ·play_wav··· una vez?
« en: Junio 03, 2011, 04:49:53 pm »
Tengo un switch que me pone un grafico segun la x del personaje de mi avatar...
segun un grafico u otro quiero que me suene un .wav solo una vez dentro de un loop...
''mexplico'' con un ''jemplo''
[code language="bennu"]
switch (father.x)
    case 50..100: graph 100; play_wav(crash_1,0); end
    case 100..150: graph 101; play_wav(crash_2,0); end
    case 150..200: graph 102; play_wav(crash_3,0); end
end
[/code]

se ve facil y que no falla ¿no?
pues cuando el personaje entre en x entre 50 y 100 debe de sonar una vez, pero como el case sigue valiendo entre 50 y 100 sigue sonando. Pues eso es lo que pregunto, que como hago pa que no suene; si pongo stop_wav(0) no me furula ¿hay que ponerle otro valor en el parentesis??

KeoH

  • Hero Member
  • *****
  • Mensajes: 1170
  • Karma: 17
Re: ¿como ·play_wav··· una vez?
« Respuesta #1 en: Junio 03, 2011, 07:01:21 pm »
usa una variable control ... o 3 xD asi .. a ver si funciona:

Código: [Seleccionar]
switch (father.x)
  case 50..100:
     graph=100;
     if(variable_control1==0)
         play_wav(crash_1,0);
         variable_control1=1;
      end
   end




Y asi en cada case con una variable distinta xD porq si vuelves a ponerle el valor 0 a la variable dentro del case no parara de sonar el wav. xD espero te sirva .. aunq esta manera no creo q sea mu eficiente xD

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2863
  • Karma: 34
  • Superviviente marciano
    • futublock
Re: ¿como ·play_wav··· una vez?
« Respuesta #2 en: Junio 03, 2011, 07:41:12 pm »
ya lo tengo, cada vez que haya un case nuevo pongo a true una variable que a parte si es true suena el sonido y se pone a false...

la probaré a ver que pasa

ya tienes tu primer karma

KeoH

  • Hero Member
  • *****
  • Mensajes: 1170
  • Karma: 17
Re: ¿como ·play_wav··· una vez?
« Respuesta #3 en: Junio 03, 2011, 07:48:04 pm »
esq el switch lo estaras ejecutando continuamente no? o esta dentro de un if o algo q haga q solo se evalue una vez? por eso te dije lo de 3 variables xD

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2863
  • Karma: 34
  • Superviviente marciano
    • futublock
Re: ¿como ·play_wav··· una vez?
« Respuesta #4 en: Junio 03, 2011, 08:10:15 pm »
está dentro del loop para comprobarlo a cada momento, lo que digo yo tampoco vale porque cada vez que comprueba si permanece en la misma x o dentro que un rango de x vuelve a sonar y sonar

voy a probar con un contador de alguna manera que cuando vale 1 suena y que siga contando y por eso no suene; el problema es que a ver cuando lo pongo a 0...

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: ¿como ·play_wav··· una vez?
« Respuesta #5 en: Junio 04, 2011, 11:15:06 pm »
Pues en ese caso tienes que hacer como con KEY: comprobar el cambio de estado, es decir, tener una variable que te diga el valor del frame anterior, y comprobar si estaba fuera de los límites (father.x_ant < 50 OR farher.x_ant > 100) o bien si has cambiado de gráfico (if graph_anterior != 100) antes de volver a reproducir.

O usar el truco de incrementar una variable mientras estés en ese caso, o que valga cero cuando no lo estás, y hacer que se reproduzca el sonido sólo cuando valga 1.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2863
  • Karma: 34
  • Superviviente marciano
    • futublock
Re: ¿como ·play_wav··· una vez?
« Respuesta #6 en: Junio 04, 2011, 11:57:06 pm »
eso ultimo se me petaba de una forma mu rara, pero no es mala idea la anterior...

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: ¿como ·play_wav··· una vez?
« Respuesta #7 en: Junio 05, 2011, 11:58:06 am »
Acuérdate de hacer un IS_PLAYING_WAV antes de pararlo, por si acaso ;)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)