<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundGradientAlphas="[1.0, 1.0]"
backgroundGradientColors="[#1A1A1A, #1A1A1A]" color="#FFFFFF" fontSize="12"
creationComplete="eventoIniciar();"
xmlns:ns1="com.fangit.sonido.*" width="700" height="530" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.events.SliderEvent;
import mx.managers.PopUpManager;
import mx.controls.ProgressBar;
private var clipSonido:Sound;
private var pbCarga:ProgressBar;
private var clipSonidoReproducir:SoundChannel;
private function eventoIniciar():void {
Security.loadPolicyFile("http://www.danguer.com/crossdomain.xml");
}
private function reproducirAudio():void {
if (clipSonido) {
iniciarReproduccionSonido();
} else {
var peticionWeb:URLRequest = new URLRequest('http://www.danguer.com/showcase/demos/flex2-Player/CodeMonkey.mp3');
pbCarga = ProgressBar(PopUpManager.createPopUp(this, ProgressBar, true));
pbCarga.x = (this.systemManager.stage.width - pbCarga.width)/2.0;
pbCarga.y = (this.systemManager.stage.height - pbCarga.height)/2.0;
pbCarga.label = "Cargando MP3 %3%%";
clipSonido = new Sound();
clipSonido.addEventListener(Event.COMPLETE, eventoAudioDescarga);
clipSonido.addEventListener(Event.SOUND_COMPLETE, eventoAudioReproduccionFinalizada);
clipSonido.load(peticionWeb);
pbCarga.source = clipSonido;
}
}
private function iniciarReproduccionSonido():void {
this.btnReproducir.enabled = false;
this.btnDetener.enabled = true;
clipSonidoReproducir = clipSonido.play(0);
visualizadorNormal.procesar = true;
visualizadorFourier.procesar = true;
}
private function eventoAudioDescarga(evento:Event):void {
PopUpManager.removePopUp(pbCarga);
iniciarReproduccionSonido();
}
private function eventoAudioReproduccionFinalizada(event:Event):void {
detenerAudio();
}
private function detenerAudio():void {
if (clipSonidoReproducir) {
clipSonidoReproducir.stop();
clipSonidoReproducir = null;
}
this.btnDetener.enabled = false;
this.btnReproducir.enabled = true;
visualizadorNormal.procesar = false;
visualizadorFourier.procesar = false;
}
private function eventoCambioVolumen(evento:SliderEvent):void {
if (clipSonidoReproducir) {
var st:SoundTransform = new SoundTransform(evento.value, sldPan.value);
clipSonidoReproducir.soundTransform = st;
}
}
private function eventoCambioPan(evento:SliderEvent):void {
if (clipSonidoReproducir) {
var st:SoundTransform = new SoundTransform(sldVolumen.value, evento.value);
clipSonidoReproducir.soundTransform = st;
}
}
]]>
</mx:Script>
<mx:HSlider x="218" y="88" id="sldPan" minimum="-1" maximum="1" value="0" snapInterval="0.1" change="eventoCambioPan(event);" liveDragging="true"/>
<mx:Label x="218" y="62" text="Pan"/>
<mx:Button id="btnReproducir" x="25" y="17" label="Reproducir Audio" click="reproducirAudio();"/>
<mx:Button id="btnDetener" x="177" y="17" label="Detener Audio" click="detenerAudio();" enabled="false"/>
<mx:Label x="25" y="62" text="Volumen"/>
<mx:HSlider x="25" y="88" id="sldVolumen" minimum="0" maximum="1" snapInterval="0.1" value="1" change="eventoCambioVolumen(event);" liveDragging="true"/>
<ns1:VisualizacionNormal id="visualizadorNormal" x="25" y="125" width="650" height="180"/>
<ns1:VisualizacionFourier id="visualizadorFourier" x="25" y="332" width="650" height="180"/>
</mx:Application>