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