¿como ·play_wav··· una vez?

Started by Futu-block, June 03, 2011, 04:49:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Futu-block

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

usa una variable control ... o 3 xD asi .. a ver si funciona:

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

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

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

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

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

eso ultimo se me petaba de una forma mu rara, pero no es mala idea la anterior...

Drumpi

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)