Estoy usando el objeto Sound dentro de una clase creada por mi para la musica de fondo de un sitio. Todo funciona y muy bien por suerte, excepto que cada seccion del sitio debe tener una musica de fondo diferente. En la clase, ademas del clasico MovieClip que contiene el "Play/Stop" hay dos clips mas que contienen lineas, una en cada clip. Estas lineas actuan para mostrar una especia de vumetro (equalizador) que se ajusta al ritmo de la musica. Perdon por no ser mas claro, pero no se como llamarles, si vumetro o equalizador a esas lineas.
El problema es que cuando cambio de opciones del menu, la musica cambia pero los clips que se muestrar junto a la musica se van encimando, uno arriba del otro.
Paso a dejar el codigo, primero el de la clase "SonidoMP3":
Código ActionScript :
public class SonidoMP3 extends Sprite { private var mp3:String; private var snd:Sound; private var req:URLRequest; private var izq:MovieClip = new CanalIzq_mc(); private var der:MovieClip = new CanalIzq_mc(); private var botonSnd:MovieClip = new StopPlay_btn(); private var canal:SoundChannel = new SoundChannel(); public function SonidoMP3(mp3) { snd = new Sound(); req = new URLRequest(mp3); snd.load(req); izq.name = "izquerda"; der.name = "derecha"; SoundMixer.stopAll(); izq.width = 1; der.width = 1; canal = snd.play(); izq.x = 873.25; izq.y = 667.35; addChild(izq), der.x = 873.25; der.y = 670.10; addChild(der); botonSnd.x = 840; botonSnd.y = 670; addChild(botonSnd); botonSnd.buttonMode = true; botonSnd.addEventListener(MouseEvent.CLICK, alClick); function alClick(e:MouseEvent):void { if (botonSnd.currentFrame == 1) { botonSnd.gotoAndStop(2); canal.stop(); } else { botonSnd.gotoAndStop(1); canal = snd.play(); } } addEventListener(Event.ENTER_FRAME, EnterFrame); function EnterFrame(event:Event):void { izq.width = (Math.round(canal.leftPeak * 100)); der.width = (Math.round(canal.rightPeak * 100)); } } }
Ahora el codigo de la linea de tiempo donde llamo la funcion que pasa el tema musical a la clase.
Código ActionScript :
function alClick(e:MouseEvent):void { var lp:LunaProgreso = new LunaProgreso(); if (n==1) { ldr.load(new URLRequest("bio.swf")); sonidoFondo("./mp3/****.mp3"); } else if (n == 2) { sonidoFondo("./mp3/****.mp3"); } else if (n == 3) { ldr.load(new URLRequest("videosc.swf")); //subFotos(); sonidoFondo("./mp3/****.mp3"); }
Y por ultimo, la funcion "sonidoFondo":
Código ActionScript :
function sonidoFondo(musica:String) { var sonido:SonidoMP3 = new SonidoMP3(musica); addChild(sonido); }
La variable "sonido" fue declarada al comienzo, pero no lo agregue aqui por creer que no seria necessario.
Si alguien puede darme algun consejo, le estare mas que agradecido. Imagino que el "addChild" que se encuentra en la funcion "sonidoFondo" es el que agrega los clips en cada llamada, pero si lo saco no entra a la clase. No se que puedo hacer.
Muchas gracias
STARLANCER
