19

Música de fondo en publicaciones

Hola hoy voy a compartir con ustedes un ejemplo (contestando a Jackie en su comentario) de como reproducir música de fondo en sus publicaciones y poder navegar entre las paginas sin que la música se pare.

Las opciones para solucionar esto eran:

Objeto MediaPlayer (al cambiar de página se para)
Objeto Flash (al cambiar de página se vuelve a ejecutar)
Comandos MCI (ésta es la solución)

Pues bien ya antes había tenido un pequeño encuentro con los comandos MCI en la entrada Lista de reproducción y más… la cual recomiendo que le den un vistazo antes, pero en este caso era distinto, pues yo debía investigar como saber si ya se esta reproduciendo un archivo antes de reproducir otro.

Luego de mucho google 😀 di con la solución. Pero vamos por pasos.

Primero le diremos a nuestra publicación (en acciones al cargar la aplicación ) cuales y cuantos archivos queremos reproducir y le diremos que todavía no estamos reproduciendo.

setvar "[temas]" "3"
setvar "[tema1]" "[PubDir]tema1.mp3"
setvar "[tema2]" "[PubDir]tema2.mp3"
setvar "[tema3]" "[PubDir]tema3.mp3"
setvar "[play]" "NO"

Luego en las acciones de la primera página (o la que necesitemos que se inicie la reproducción) pondremos el siguiente código.

If "[play]" "=" "NO"
    :ran
    Random "[temas]" "[random]"
    if "[random]" "=" "0"
        GotoLine "ran"
    endif
    npRutaCortaArchivo "[tema[random]]"
    setvar "[tema]" "[npResultadoAccion]"
    SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
    npEjecutarAccion "[accion]"
    SetVar "[play]" "SI"
EndIf
TimerStart "Timer1" "1000"

Lo que hace el código anterior es generar un numero aleatorio para empezar a reproducir ese archivo, esto para evitar siempre reproduzca el mismo sonido siempre. Todo ésto lo hace solamente una vez al entrar a la página pues si navegamos a otra y volvemos a ésta empezaría a reproducir otro archivo haciendo que se mezclen los sonidos.

En las acciones del Timer

SetVar "[accion]" "MCICommand [#34]STATUS [tema] mode[#34]"
npEjecutarAccion "[accion]"
if "[MCIResponse]" "<>" "playing"
    if "[random]" "=" "3"
        setvar "[random]" "1"
    else
        if "[random]" "<" "3"
            setvar "[random]" "[random]+1"
        endif
    Endif
    npRutaCortaArchivo "[tema[random]]"
    setvar "[tema]" "[npResultadoAccion]"
    SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
    npEjecutarAccion "[accion]"
Endif

El código anterior obtiene el estado del dispositivo MCI y si éste no esta reproduciendo pasa al siguiente tema.

Espero que sea claro, pues me cuesta explicarlo en detalle, cualquier cosa comenten y responderé su consulta.

Plugins Utilizados:

  • NeoDouble (DEC)

Screenshot del ejemplo:

ejemplo_musica_fondo

Descarga:

  ejemplo_musica_fondo.rar (6,9 MiB, 3.544 hits)


Saludos

bunker

19 Comments

  1. Hola por favor puedes decirme donde esta acciones de cargar la publicacion, las acciones del timer y en que lugar indico la cancion que quiero reproducir?
    gracias

  2. jesfer92:

    por favor puedes decirme donde esta
    acciones de cargar la publicacion

    Menu Libro >> Propiedades de libro >> Acciones

    las acciones del timer

    Click derecho al objeto >> Acciones

    en que lugar indico la cancion que
    quiero reproducir?

    Tenes que modificar los nombres en las acciones que pones al cargar la publicacion

    Podes descargar el ejemplo y analizarlo.

    Saludos

  3. Hola, necesito saber si se pueden crear aplicaciones con fondo transparente. Es decir, que al colocar de fondo una imagen gif (transparente por ejemplo), no aparezca de fondo el rectángulo que está de base en la aplicación. Sino que atras del fondo gif transparente de mi aplicación, se puedan apreciar los íconos que están en el escritorio.

    Gracias de antemano :mrgreen:

  4. Hola:
    Me gustaria saber si se puede hacer una Web con neobook, y de donde descargo el ActveX para que se vea en el navegador,,

    Un saludo 😉

  5. Los programas son funcionales en la web. Con IE o en Firefox con una extensión.
    Para publicar para la web deberás elegir en el momento de compilar > Tipo de compilación: ActiveX Control (PKG).

    Saludos

  6. Hola Bunker ya encontré la solución y sí es posible!!!! creo que la fe en verdad mueve montañas pues tenía fé de encontrar cómo colocarla. Es la siguiente:

    En Libro => Propiedades del Libro => Ventana => Estilos de ventana => Ventana de forma personalizada.

    Ahí te pide que ingreses el gráfico que quedará como plataforma para tu aplicación sin importar la forma que tenga!!!! puede ser un circulo, un rectangulo, una estrella o la figura o forma que sea.

    Saludos!!!! :mrgreen:

  7. Bunker ahora tengo otro problema:

    Quiero crear un timer que me permita apagar la pc en el tiempo que se le asigne. El problema es con el cronómetro, no consigo manipularlo para que despues del tiempo específico, active el comando Shutdown para apagar o reiniciar la pc.

    He probado el comando y tambien lo logro detener pero lo que me falta es hacer que el cronómetro me lo active despues de haberse cumplido el tiempo ordenado. 🙁

    Saludos cordiales.

  8. Ahí te pide que ingreses el gráfico
    que quedará como plataforma para tu
    aplicación sin importar la forma que
    tenga!!!! puede ser un circulo, un
    rectangulo, una estrella o la figura o
    forma que sea.

    Hola Hugo… pensé que te referías a toda la aplicación de fondo transparente, esto no es posible.

    En cuanto a tu otra consulta:

    El timer deberá estar configurado para activarlo con la accion TimerStart.
    Ej. TimerStart “Timer1” “1000”

    Luego en las acciones de tu timer deberás escribir algo así:

    If "[tiempo]" ">=" "120000"
       . ACA TUS ACCIONES
       alertbox "DEBUG" "YA PASO EL TIEMPO"
       . HASTA ACA TUS ACCIONES
       TimerStop "Timer1"
    Endif

    Con ese código luego de 2 minutos (120000 milisegundos, tu deberás convertir tu tiempo) se realizan las acciones dentro del if, en este caso un alertbox informando que pasó el tiempo.

    Reemplaza la linea del alertbox con tus acciones.

    DESCARGAR EJEMPLO:
    http://www.neobookeros.com.ar/wp-content/files/ejtimer.rar

    Cualquier cosa me consultas.

    Saludos

  9. Hola Bunker te hago una consulta donde puedo descargar el plugin NeoDouble el enlace esta roto desde ya muchas gracias!!!

  10. Cuando intento reproducir un archivo de audio me dice:

    El dispositivo especificado no está abierto o MCI no lo reconoce.

    Esto ocurre cuando el archivo de encuentra dentro de una carpeta con espacios, es decir:

    C:\Archivos de programa\programa\musica.wma: No funciona porque hay espacios en el nombre de la carpeta Archivos de programa

    Si en cambio lo ejecuto desde C:\Archivosdeprograma\programa\musica.wma, creando la carpeta Archivosdeprograma sin espacios, me funciona perfectamente.

    ¿Cómo lo soluciono?

  11. @Anonimo como dice en el post debes usar la acción npRutaCortaArchivo “[tema[random]]” del plugin NeoDouble.

    Saludos

  12. Estimado tengo un problema para poner la música de fondo en una aplicación, descargue tu aplicación y la quise revisar y me da un error npRutaCortaArchivo “[tema[random]]”, puede ser que me este faltando alguna actualización porque por ejemplo la extensión que permite trabajar en audio es wav y si quiero poner mp3 me sale del programa.-
    Desde ya te estaré agradeciendo.-

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *