Bueno mi problemas este este tengo un reproducto que llama a una carpeta externa musica en mp3, mi problema es que cuando quiero pasar por ejemplo de mi frame 5 a mi frame 2 con el boton return_btn la musica no se detiene sino que vuelve a empezar y si apriteo el boton reproducir_btn se escuchan dos canciones una que si puedo pausar y detener y la otra no concluye hasta que finaliza el tiempo.Aqui mi script a detalle lo mas que pude:
/////////////////////////////////////////////Clases
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.media.SoundTransform;
import flash.media.SoundChannel;
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.media.Sound;
/////////////////////////////////////////////Variables
var reproducir_btn:SimpleButton;
var pausar_btn:SimpleButton;
var detener_btn:SimpleButton;
var avanzar_btn:SimpleButton;
var retroceder_btn:SimpleButton;
var mas_btn:SimpleButton;
var menos_btn:SimpleButton;
var return_btn:SimpleButton;
var volumen_mc:MovieClip;
var mascarilla_mc:MovieClip;
var mute_mc:MovieClip;
var repetir_mc:MovieClip;
var cancion:Sound;// me permite almacena el audio
var canal:SoundChannel = new SoundChannel();
// declaro y construyo un canal de transmision para el audio
var transformar:SoundTransform=new SoundTransform();
//declaro variable para corregir el volumen del canal
var track:String;//me permite mover las canciones en pilas y colas
var segundosTotal:int;//alamceno seg. en bruto
var segundos:int;//almaceno seg.reales
var minutosTotal:int;//almaceno min. en bruto
var tiempo:Number;//me permite almacenar cantidad de milisegundos transmitidos
var previo:Number;//me permite almacenar el volumen previo
var azar:int;// me permite obtener numero aleatorio
var seleccion:int;
var reloj_txt:TextField;
var titulo_txt:TextField;
var aleatorio_mc:MovieClip;
//////////////////////////////////////////contructor de nombres
var canciones:Array=new Array();
for (var i:int=0; i<10; i++)
{
canciones[i] = "canciones/cancion_" + i + ".mp3";
}
/////////////////////////////////////////////Inicio
tiempo = 0;//le pido que toque desde el milisegundo cero
cargarCancion();// mando invocar la funcion cargarCancion al inicio de la aplicación
mute_mc.buttonMode = true;
repetir_mc.buttonMode = true;
aleatorio_mc.buttonMode = true;
mascarilla_mc.cacheAsBitmap = true;
titulo_txt.cacheAsBitmap = true;
//cache as bitmap considera como fotos mascarilla y titulo
titulo_txt.mask = mascarilla_mc;
//le pido a titulo que tome a mascarilla el move mascarilla_mc
/////////////////////////////////////////////EventListeners
detener_btn.addEventListener(MouseEvent.CLICK,detener);
mas_btn.addEventListener(MouseEvent.CLICK, aumentar);
menos_btn.addEventListener(MouseEvent.CLICK, disminuir);
avanzar_btn.addEventListener(MouseEvent.CLICK, avanzar);
retroceder_btn.addEventListener(MouseEvent.CLICK, retroceder);
pausar_btn.addEventListener(MouseEvent.CLICK, pausar);
mute_mc.addEventListener(MouseEvent.CLICK, mute);
repetir_mc.addEventListener(MouseEvent.CLICK, repetir);
aleatorio_mc.addEventListener(MouseEvent.CLICK, aleatorio);
return_btn.addEventListener(MouseEvent.CLICK, regresar);
stage.addEventListener(Event.ENTER_FRAME, potencia);
/////////////////////////////////////////////Funciones
//////////////////////////// cargarCancion
function cargarCancion():void
{
if (aleatorio_mc.currentFrame == 2)
{
Math.floor(Math.random() * 10);
// redondea a piso numero al azar;
//trace(azar);
seleccion = azar;
}
else
{
seleccion = 0;
}
cancion=new Sound();// construyo nueva variable de tipo sound
cancion.load(new URLRequest(canciones[seleccion]));
canal = cancion.play(tiempo);// transmito por medio del canal la cancion
checarVolumen();//
cancion.addEventListener(Event.ID3, datos);
// le pido a la cancion que encuanto tenga acceso a los datos del ID3;
if (transformar.volume == 0)
{
//si esta mute encendido entonces...
transformar.volume = 0;
canal.soundTransform = transformar;//le aplico el volumen
}
canal.addEventListener(Event.SOUND_COMPLETE, finalCancion);
//cuando la cancion se termina ejcuta final cancion;
titulo_txt.x = stage.stageWidth;
}//cerrar cargarCancion
/////////////////////////////regresar
function regresar(evt:MouseEvent):void
{
gotoAndStop(2);
canal.stop();
reproducir_btn.addEventListener(MouseEvent.CLICK,reproducir);
tiempo = 0;
titulo_txt.text = "Detenido. . . Detenido. . . Detenido. . . ";
titulo_txt.width = titulo_txt.textWidth + 10;
}//cierra move
//////////////////////////// detener
function detener(evt:MouseEvent):void
{
canal.stop();
// detengo la transmision de la cancion;
reproducir_btn.addEventListener(MouseEvent.CLICK,reproducir);
//determino que solo al detener se encienda el boton de reproducir;
tiempo = 0;
titulo_txt.text = "Detenido. . . Detenido. . . Detenido. . . ";
titulo_txt.width = titulo_txt.textWidth + 10;
}
//////////////////////////// reproducir
function reproducir(evt:MouseEvent):void
{
reproducir_btn.removeEventListener(MouseEvent.CLICK,reproducir);
//canal=cancion.play();
cargarCancion();//mando a llamar la cancion actual
}
/////////////////////////////disminuir
function disminuir(evt:MouseEvent):void
{
if (transformar.volume > 0)
{//mientras el volumen sea mayor que 0 entonces: . . .
transformar.volume -= 0.5;//le bajo el volumen de 0.5 en 0.5
canal.soundTransform = transformar;// aplico el volumen sal canal
//trace(transformar.volume);
}// cierra if
checarVolumen();//invoco funcion para ver animacion de volumen
mute_mc.gotoAndStop(1);
}
// cierra disminuir;
///////////////////////////// aumentar
function aumentar(evt:MouseEvent):void
{
if (transformar.volume < 2.5)
{// mientras el volumen sea menor que 2.5 entonces. . .
transformar.volume += 0.5;// aumenta de 0.5 en0.5
canal.soundTransform = transformar;// aplico el nuevo volumen
//trace(transformar.volume);
}// cierra if
checarVolumen();//invoco funcion para ver animacion de volumen
mute_mc.gotoAndStop(1);
}
//cierra aumentar;
//////////////////////////////////////////////////////checarVolumen
function checarVolumen():void
{
switch (transformar.volume)
{
case 0 :
volumen_mc.gotoAndStop(1);
break;
case 0.5 :
volumen_mc.gotoAndStop(2);
break;
case 1 :
volumen_mc.gotoAndStop(3);
break;
case 1.5 :
volumen_mc.gotoAndStop(4);
break;
case 2 :
volumen_mc.gotoAndStop(5);
break;
case 2.5 :
volumen_mc.gotoAndStop(6);
break;
}//cierra switch
}//cierra checarVolumen
/////////////////////////////////////////////////////// avanzar//colas
function avanzar(evt:MouseEvent):void
{
track = canciones.shift();// extrae el primer valor de un arreglo
canciones.push(track);
//coloco en el ultimo indice del arreglo canciones el valor almacenado;
//en track para hacer colas
//trace(canciones);
//trace("////////////////////////");
canal.stop();
//detengo la cancion;
tiempo = 0;
cargarCancion();//mando llamar la nueva cancion
titulo_txt.x = stage.stageWidth;
}
/////////////////////////////////////////////////////// retroceder//pilas
function retroceder(evt:MouseEvent):void
{
track = canciones.pop();//pop extrae el ultimo valor
canciones.unshift(track);
//colocar al inicio;
//trace(canciones);
//trace("//////////////");
canal.stop();
tiempo = 0;
cargarCancion();
titulo_txt.x = stage.stageWidth;
}
//////////////////////////////////////////////////////potencia
function potencia(evt:Event):void
{
//trace(canal.position);//muestra milisegundos transmitidos
segundosTotal = canal.position / 1000;//obtengo seg. en bruto
segundos = segundosTotal % 60;
minutosTotal = segundosTotal / 60;
reloj_txt.text = agregaCero(minutosTotal) + ":" + agregaCero(segundos);
///////////////////////////////////mover caja del titulo
titulo_txt.x -= 3;
if (titulo_txt.x < - titulo_txt.width)
{
//cuando la caja de texto haya salido por completo de lado izq le pido que se
//coloque a la derecha
titulo_txt.x = stage.stageWidth;
}
}
///////////////////////// agregaCero
function agregaCero(valor:int):String
{
if (valor < 10)
{
return ("0"+valor);
}
else
{
return (String(valor));
}
}
////////////////////////pausar
function pausar(evt:MouseEvent):void
{
tiempo = canal.position;//alamceno milisegundo actual
canal.stop();
reproducir_btn.addEventListener(MouseEvent.CLICK, reproducir);
//enciendo el boton de reproducir;
titulo_txt.text = "Pausa. . . Pausa. . . Pausa. . . ";
titulo_txt.width = titulo_txt.textWidth + 10;
}
/////////////////////////datos
function datos(evt:Event):void
{
/*trace(cancion.id3.songName);
trace(cancion.id3.artist);
trace(cancion.id3.album);
trace(cancion.id3.genre);
trace(cancion.id3.year);
*/
titulo_txt.text="Titulo: "+cancion.id3.songName
+" Artista:"+cancion.id3.artist
+" Album:"+cancion.id3.album
+" Genero:"+cancion.id3.genre
+" Año:" + cancion.id3.year;
//trace(titulo_txt.width);//ancho fisico de la caja
//trace(titulo_txt.textWidth);//ancho real del contenido de la caja
titulo_txt.width = titulo_txt.textWidth + 10;
//redimesiono la caja de texto segun el ancho del titulo
}
/////////////////////////mute
function mute(evt:MouseEvent):void
{
if (mute_mc.currentFrame == 1)
{
//si mute_mc anda en el frame 1 entonces...
mute_mc.gotoAndStop(2);
previo = transformar.volume;//almaceno el volumen actual
transformar.volume = 0;//le bajo el volumen
canal.soundTransform = transformar;//le aplico el volumen al canla
}
else
{
// si esta en el 2 lo pas al 1
mute_mc.gotoAndStop(1);
transformar.volume = previo;// restauro el volumen previo
canal.soundTransform = transformar;// le aplico el volumen
}
}
/////////////////////////////////////////////repetir
function repetir(evt:MouseEvent):void
{
if (repetir_mc.currentFrame == 1)
{
//si repetir_mc anda en el frame 1 entonces...
repetir_mc.gotoAndStop(2);
}
else
{
// si esta en el 2 lo pas al 1
repetir_mc.gotoAndStop(1);
}
}
/////////////////////////////////////////////////////////finalCancion
function finalCancion(evt:Event):void
{
//trace("OK");
if (repetir_mc.currentFrame == 1)
{
//repite la misma
cargarCancion();//mando llamar la misma
}
else
{
//repite todas
track = canciones.shift();// saco la primer cancion
canciones.push(track);
//la coloco al final;
canal.stop();
//detengo la transmision;
tiempo = 0;// regreso tiempo a 0(pausa)
cargarCancion();
}
}
/////////////////////////////////////////////////////aleatorio
function aleatorio(evt:MouseEvent):void
{
if (aleatorio_mc.currentFrame == 1)
{
aleatorio_mc.gotoAndStop(2);
}
else
{
aleatorio_mc.gotoAndStop(1);
}
}//lo regreso a la normalidad
Y de antemano gracias aun, si no me pudisen ayudar.