Reproducir música con flash (indefinidamente)

  Compatibilidad del artículo: ActionScript 3.0.   

El manejo de los sonidos / músicas con Flash, se pueden hacer fácilmente con las clases (entre otras) Sound y SoundChannel.

En el ejemplo, se muestra un sencillo script, que al cargarse, reproduce una música, con dos botones, uno de pausa / play y otro de parada.

Al principio se definen 3 valores, que podrían ser modificados, ya explicados en código.

Después se definen los eventos de los botones y las variables globales.

Posteriormente, se definen las funciones, todas muy sencillas:

play_pausa: Al ser pulsado el botón, realiza una acción u otra, dependiendo la última acción.
para: Al ser pulsado el botón, para la música y establece la posición de tiempo a cero.
pausa: igual que "para", pero estableciendo la posición de tiempo en el momento en que estaba.
carga: Carga el sonido pasado y lo "reproduce".
reproduce: Reproduce el sonido y crea el "listener" para el evento "SOUND_COMPLETE", que se accionará cuando termine la reproducción.
canal_fin: Es llamada, cuando la música / sonido se han terminado de reproducir, en caso de establecer un número positivo de reproducciones en iLoop, restará uno y volverá a reproducir, en caso de ser negativo, se reproduce indefinidamente, por lo que volvería a reproducir directamente, en caso de valer 0, no se volvería a reproducir.

Por último carga una melodía.


ActionScript:
// Copyright © McAnam.com
// http://www.mcanam.com/articulos/Flash.php?id=10


// DEFINICIÓN DE VALORES (ini)

// Tiempo de precarga (en milisegundos), antes de comenzar la reproducción
const slcBUFFER = new SoundLoaderContext(3000);

// Las veces que se reproducirá (negativo, infinitas veces)
var iLoop = -1;

// Posición en la que comenzará la reproducción (milisegundos)
var iPOSICION_INI = new int(30000);

// DEFINICIÓN DE VALORES (fin)

// Definición eventos botones
btn_play_pausa.addEventListener(MouseEvent.CLICK, play_pausa);
btn_para.addEventListener(MouseEvent.CLICK, para);

// Variables globales
var sonido = new Sound();
var canal = new SoundChannel();
var iPosicion = new int(iPOSICION_INI);


function play_pausa(evt:MouseEvent):void{    
    
    if (btn_play_pausa.label == "Play")
    {
        btn_play_pausa.label = "Pausa";
        reproduce();
    }
    else
    {
        btn_play_pausa.label = "Play";
        pausa();
    }
    
}

function para(evt:MouseEvent):void{
    btn_play_pausa.label = "Play";
    iPosicion = 0;
    canal.stop();
}

function pausa(){
    
    iPosicion = canal.position;
    canal.stop();
    
}

function carga(sUrl:String)
{
    
    // Se carga el sonido
    sonido.load(new URLRequest(sUrl), slcBUFFER);
    
    // Se reproduce
    reproduce();
    
}

function reproduce(){
    
    canal = sonido.play(iPosicion);
    
    // Evento, cuando se termine de reproducir
    canal.addEventListener(Event.SOUND_COMPLETE, canal_fin);
    
}

function canal_fin(evt:Event):void{    
    
    // Si se quiere empezar siempre desde la posición inicial establecida
    // iPosicion = iPOSICION_INI;
    
    iPosicion = 0;
    
    if (iLoop > 0){
        iLoop = iLoop - 1;
        reproduce();
    }
    else if (iLoop < 0){
        reproduce();
    }
    
}

carga("chopin.mp3");


Ejemplo:

Links relacionados:
Importar vídeo y reproducir streaming con flash
Crear juego de "Busca las parejas" en Flash (1/2)
Etiqueta desplazándose por el explorador en JavaScript


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com