Noviembre 25, 2010, 03:42:31 PM Ultima modificación: Diciembre 04, 2010, 05:48:08 PM por georgenda
Perdonad que os moleste de nuevo  :-[
Es que en mi juego de naves tengo una opci?n donde eliges la canci?n que quieres que se escuche de fondo; mi pregunta es: ?se podr?a poner un c?digo o algo as? para que pase a la siguiente canci?n y que no repita la misma canci?n que estaba sonando?

GRACIAS DE ANTEMANO T?OS!  :D :)
7R@VIS L@NDON B@RKER

Escoge un objeto del que uses una sola instancia y que est? siempre presente en las partidas, de no haberlo te creas uno.

En el evento Create creas un array para contener todas las pistas/canciones y una variable para se?alar la pista en reproducci?n:

[gml]jukebox[0]=pistaA;
jukebox[1]=pistaB;
jukebox[2]=pistaC;
jukebox[3]=pistaD;
//y as? sucesivamente;
pistaactual=0;
sound_play(jukebox[pistaactual]);[/gml]

En el evento Step colocas el c?digo que se encargar? de pasar a la siguiente canci?n. Suponiendo que el tama?o del array ser? un n?mero fijo (imaginemos que 10) utilizaremos el operador mod para volver a la primer canci?n al alcanzar el final del array. Recuerda que un array comienza a contar desde 0, por lo que su tama?o = ?ndice mayor+1, as? por ejemplo un array cuyo ?ndice mayor sea 9 ( array[9] ) tendr? por tama?o 10. Volviendo al c?digo.
[gml]
if !sound_isplaying(jukebox[pistaactual])
{
pistaactual=pistaactual+1 mod 10; //donde 10 es el tama?o del array
sound_play(jukebox[pistaactual])
}[/gml]

Ahora solo debes pedirle al jugador que cambie el valor de pistaactual y t? le restas 2, uno por que el array comienza en 0 y el otro para que el c?digo en Step simule que se estaba reproduciendo la pista anterior al n?mero indicado. Yo lo voy a ejemplificar r?pidamente con un get_integer().

Evento press M-key:
[gml]var p;
p=round(get_integer('N?mero de pista (1-10):',pistaactual));
if (p<1) or (p>10) exit;
else pistaactual=p-2;[/gml]

Espero te sirva, luego me cuentas qu? tan bien te result?. :)
       

Cita de: Hackware en Diciembre 01, 2010, 09:00:56 AM
Escoge un objeto del que uses una sola instancia y que est? siempre presente en las partidas, de no haberlo te creas uno.

En el evento Create creas un array para contener todas las pistas/canciones y una variable para se?alar la pista en reproducci?n:

[gml]jukebox[0]=pistaA;
jukebox[1]=pistaB;
jukebox[2]=pistaC;
jukebox[3]=pistaD;
//y as? sucesivamente;
pistaactual=0;
sound_play(jukebox[pistaactual]);[/gml]

En el evento Step colocas el c?digo que se encargar? de pasar a la siguiente canci?n. Suponiendo que el tama?o del array ser? un n?mero fijo (imaginemos que 10) utilizaremos el operador mod para volver a la primer canci?n al alcanzar el final del array. Recuerda que un array comienza a contar desde 0, por lo que su tama?o = ?ndice mayor+1, as? por ejemplo un array cuyo ?ndice mayor sea 9 ( array[9] ) tendr? por tama?o 10. Volviendo al c?digo.
[gml]
if !sound_isplaying(jukebox[pistaactual])
{
pistaactual=pistaactual+1 mod 10; //donde 10 es el tama?o del array
sound_play(jukebox[pistaactual])
}[/gml]

Ahora solo debes pedirle al jugador que cambie el valor de pistaactual y t? le restas 2, uno por que el array comienza en 0 y el otro para que el c?digo en Step simule que se estaba reproduciendo la pista anterior al n?mero indicado. Yo lo voy a ejemplificar r?pidamente con un get_integer().

Evento press M-key:
[gml]var p;
p=round(get_integer('N?mero de pista (1-10):',pistaactual));
if (p<1) or (p>10) exit;
else pistaactual=p-2;[/gml]

Espero te sirva, luego me cuentas qu? tan bien te result?. :)
GRACIAS T?O, ME HAS SALVADO EL CULO! :DDDDDDD
7R@VIS L@NDON B@RKER