Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Canciones aleatorias  (Leído 240 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marth

en: Octubre 21, 2019, 06:19:10 pm
Veran, tengo un objeto Musica cuya función es poner música, la cual sigue este código:

musica=audio_play_sound(irandom_range(Accion1,Accion6),0,0)

Ademas, este objeto debe comprobar cuando ha parado la música para repetir el código.
Por el momento el código de arriba lo he colocado en un script llamado maestro(), y en el "finalizar paso", tengo este código:

if(!audio_is_playing(musica))
    maestro()


Aunque tengo que estar comprobando en un step cuando la música para.
¿Hay un modo más eficiente?
A mi se me ocurre obtener la longitud de la canción y pasarla a un alarm. Cuando la cuenta atras del alarm termine, es que la canción termino y debo poner otra con maestro().
¿Hay alguna función que logre sacar la longitud de una canción?

Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas.

-Linus Torvalds ("Padre" de Linux)-
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado dixon

  • Habitual
  • *
  • Puntos: 77
  • Mensajes: 43
  • Agradecido: 4 veces
  • Juegos de educación gratis dixon 2019. Prov. 4:7
    • Ver Perfil
Respuesta #1 en: Octubre 21, 2019, 08:24:13 pm
Hola,

Tu código es muy bueno, y cumple su función pues detecta cuando la música ha terminado y reproduce otra al azar. Ahora bien si lo que quieres es experimentar con la duración de cada musica para crear una alarma pues necesitarías:

audio_sound_length(index): Esta función devolverá la duración del sonido dado en segundos.

Luego tendrías que calcular la alarma correcta con:

Código: [Seleccionar]
alarm[0]=audio_sound_length(index)/fps
Ahora bien, la alarma internamente se evalua por cada paso por segundo para verificar si ha terminado o no por lo tanto no hemos solucionado el problema pues lo que queríamos era ahorrarnos unos códigos por segundo. Se puede concluir que el código que muestras al principio es el más optimo.

El código entregado es experimental porfavor mostrar resultados de su ejecución.

 
Los siguientes usuarios dieron las gracias a este tema: Marth


Desconectado Marth

Respuesta #2 en: Octubre 21, 2019, 10:08:51 pm
Hola,

Tu código es muy bueno, y cumple su función pues detecta cuando la música ha terminado y reproduce otra al azar. Ahora bien si lo que quieres es experimentar con la duración de cada musica para crear una alarma pues necesitarías:

audio_sound_length(index): Esta función devolverá la duración del sonido dado en segundos.

Luego tendrías que calcular la alarma correcta con:

Código: [Seleccionar]
alarm[0]=audio_sound_length(index)/fps
Ahora bien, la alarma internamente se evalua por cada paso por segundo para verificar si ha terminado o no por lo tanto no hemos solucionado el problema pues lo que queríamos era ahorrarnos unos códigos por segundo. Se puede concluir que el código que muestras al principio es el más optimo.

El código entregado es experimental porfavor mostrar resultados de su ejecución.
Vale, así que existe esa opción.
Es algo chasco que no sea más eficiente, pero puede servir.
Por ejemplo, podria ser que no quiera que la siguiente canción se reproduzca nada más termine la actual, sino que se espere 1 o 2 segundos.
Pues sumo algo de tiempo en el alarm y así genero ese margen de tiempo.

Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas.

-Linus Torvalds ("Padre" de Linux)-