He conseguido funcionar un mp3 directamente pero no una lista a traves de xml, la verdad que voy modificando codigo entre lo poco que se y he visto por internet pero tengo por ahi algun fallo que no doy con el por si alguien me puede ayudar para que funcione. De momento solo tengo play/pause y stop. El codigo
Código ActionScript :
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("libXML/lista.xml"));
var sonido:Sound = new Sound();
var canalSonido:SoundChannel;
var playlist:XMLList;
var reproduciendoFlag:Boolean = false;
var mySong:Number = 0;
var posicionActual:Number = 0;
var my_total:Number;
myXMLLoader.addEventListener(Event.COMPLETE,completeHandler);
myXMLLoader.addEventListener(Event.ID3,id3Handler);
function completeHandler(evt:Event) {
var myXML:XML = new XML(evt.target.data);
playlist = myXML.SONG;
my_total = playlist.length();
posicionActual = 0;
empezarCancion(mySong);
myXMLLoader.removeEventListener(Event.COMPLETE, completeHandler);
myXMLLoader = null;
}
function id3Handler(evt:Event) {
var id3:ID3Info = ID3Info(sonido.id3);
nombre_txt.text = id3.songName;
autor_txt.text = id3.artist;
anyo_txt.text = id3.album+" ("+id3.year+")";
}
function reproduciendo(evt:Event) {
var porcentajeReproducido:Number = canalSonido.position*100/sonido.length;
barra_mc.progreso_mc.width = barra_mc.width*porcentajeReproducido/100;
tiempo_txt.text = pasarMil(canalSonido.position)+" / "+pasarMil(sonido.length);
}
function pasarMil(mili:Number) {
var seg:Number = mili/1000;
var min:Number = int(seg/60);
var segReales:Number = int(((seg/60)-min)*60);
var tiempo:String = min+":";
if(segReales<10){
tiempo+="0"+segReales;
} else {
tiempo+=segReales;
}
return tiempo;
}
barra_mc.bt.addEventListener(MouseEvent.CLICK,clickBarra);
function clickBarra(evt:MouseEvent) {
var posX:Number = mouseX-barra_mc.x;
var porcentaje:Number = posX*100/barra_mc.width;
posicionActual = int(porcentaje*sonido.length/100);
empezarCancion();
}
function empezarCancion(mySong):void {
trace("DURACION: ");
var myURL = playlist[mySong].@URL;
if(canalSonido != null) {
canalSonido.stop();
}
btplay.gotoAndStop(2);
btstop.gotoAndStop(1);
//sonido = new Sound();
sonido.load(new URLRequest(myURL));
canalSonido = sonido.play(posicionActual,1);
canalSonido.addEventListener(Event.SOUND_COMPLETE,fincancion);
reproduciendoFlag = true;
barra_mc.addEventListener(Event.ENTER_FRAME,reproduciendo);
//trace("DURACION: "+sonido.length);
//trace("POSICION: "+canalSonido.position);
//canalSonido.stop();
}
function fincancion(evt:Event) {
//pasar a siguiente cancion
barra_mc.removeEventListener(Event.ENTER_FRAME,reproduciendo);
}
btplay.addEventListener(MouseEvent.CLICK,playHandler);
btplay.buttonMode = true;
function playHandler(evt:MouseEvent) {
if(reproduciendoFlag==true){
reproduciendoFlag = false;
posicionActual = canalSonido.position;
canalSonido.stop();
btstop.gotoAndStop(1);
btplay.gotoAndStop(1);
} else {
empezarCancion();
}
}
btstop.addEventListener(MouseEvent.CLICK,stopHandler);
btstop.buttonMode = true;
function stopHandler(evt:MouseEvent) {
reproduciendoFlag = false;
posicionActual = 0;
canalSonido.stop();
btstop.gotoAndStop(2);
btplay.gotoAndStop(1);
}
dragvolumen_mc.addEventListener(MouseEvent.MOUSE_DOWN,downVolumen);
dragvolumen_mc.addEventListener(MouseEvent.MOUSE_UP,upVolumen);
function downVolumen(evt:MouseEvent) {
dragvolumen_mc.addEventListener(Event.ENTER_FRAME,cambiarVolumen);
var limites:Rectangle = new Rectangle(dragvolumen_mc.x,barravolumen_mc.y,0,barravolumen_mc.height-dragvolumen_mc.height);
dragvolumen_mc.startDrag(false,limites);
}
function upVolumen(evt:MouseEvent) {
dragvolumen_mc.removeEventListener(Event.ENTER_FRAME,cambiarVolumen);
dragvolumen_mc.stopDrag();
}
function cambiarVolumen(evt:Event) {
var total:Number = barravolumen_mc.height-dragvolumen_mc.height;
var posY:Number = dragvolumen_mc.y-barravolumen_mc.y;
var porcentaje:Number = 100 - (posY*100/total);
var transformarSonido:SoundTransform = new SoundTransform();
transformarSonido.volume = porcentaje/100;
canalSonido.soundTransform = transformarSonido;
//trace(porcentaje+"%");
}
Gracias por todo
