Comunidad de diseño web y desarrollo en internet online

Como logro que las canciones se continuen en MediaPlayBack

Citar            
MensajeEscrito el 27 Ene 2009 04:09 am
Hola este es mi primer post, como todos llego a Cristal totalmente deseperado. Despues de estar un par de horas buscando no encuentro un respuesta que clame mi ignorancia sobre este tema.

Tengo este codigo bien armado y acomodado a mi gusto con respecto a los tamaños y todo, pero no logro que las canciones se continuen, no entiendo donde pegar los codigos que andan por ahi para lograrlo.

import mx.controls.List;
import mx.controls.MediaPlayback;
//Cargamos el XML
canciones = new XML();
canciones.ignoreWhite = true;
canciones.onLoad = function(success) {
if (success) {
//Shortcuts
cancion = canciones.firstChild;
num_total = canciones.firstChild.childNodes.length;
//Creamos y llenamos la lista
crearLista();
//Creamos el reproductor
crearPlayer();
} else {
trace("No se pudo cargar la lista de canciones");
}
};
canciones.load("lista.xml");
///////////////////////////////////////////////////////////////////
/////////////////////////// LISTENERS ///////////////////////////
///////////////////////////////////////////////////////////////////
lista.addEventListener("change", alCambiar);
///////////////////////////////////////////////////////////////////
/////////////////////////// FUNCIONES ///////////////////////////
///////////////////////////////////////////////////////////////////
function crearLista() {
//Posicionamos la lista de las canciones
lista.setSize(215, 36);
lista._x = 9;
lista._y = 28;
_global.style.setStyle("fontSize", 10);
//Llenamos la lista con las canciones
misDatos = new Array();
lista.dataProvider = misDatos;
for (var i = 0; i<num_total; i++) {
misDatos.addItem({label:cancion.childNodes[i].firstChild,
data:cancion.childNodes[i].firstChild});
}
}
function crearPlayer() {
//Posicionamos el reproductor
player.setSize(231, 94);
player._x = 9.0;
player._y = 0.1;
//Propiedades del reproductor
player.controllerPolicy = "on";
player.mediaType = "MP3";
}
//Cuando cambiamos la canción seleccionada en la lista... cargamos la nueva canción, y ejecutamos
function alCambiar(evento) {
if (evento.type == "change") {
player.setMedia("musica/"+lista.selectedItem.data, "MP3");
player.play();
}
}

Fin de codigo

Por favor si alguien me puede explicar donde y que codigo introdusco para que las canciones se continuen y que la lista no se detengan al final de cada cancion.

Por Clas

8 de clabLevel



 

Argentina Buenos Aires

firefox
Citar            
MensajeEscrito el 27 Ene 2009 08:13 am
Hola, Bueno cambie el codigo, te lo pongo aqui y te lo explico mas adelante:

Codigo final


Código ActionScript :

import mx.controls.List;
import mx.controls.MediaPlayback;

var index:Number = 0;
var repetir:Boolean = true;

//Cargamos el XML
canciones = new XML();
canciones.ignoreWhite = true;
canciones.onLoad = function(success){
   if (success){
      //Shortcuts
      cancion = canciones.firstChild;
      num_total = canciones.firstChild.childNodes.length;
      
      //Creamos y llenamos la lista
      crearLista();
      //Creamos el reproductor
      crearPlayer();
   }
   else{
      trace("No se pudo cargar la lista de canciones");
   }
}
canciones.load("lista.xml");
lista.addEventListener("change", alCambiar);

function crearLista(){
   //Posicionamos la lista de las canciones
   lista.setSize(180,200);
   lista._x = 220;
   lista._y = 0;
   
   //Llenamos la lista con las canciones
   misDatos = new Array();
   lista.dataProvider = misDatos;
   
   for (var i=0; i<num_total; i++) {
      misDatos.addItem({label: cancion.childNodes[i].firstChild, data: cancion.childNodes[i].firstChild}); 
   }
}

function crearPlayer(){
   //Posicionamos el reproductor
   player.setSize(200,200);
   player._x = 0;
   player._y = 0;
   
   //Propiedades del reproductor
   player.controllerPolicy = "on";
   player.mediaType = "MP3";
   player.addEventListener("complete", this);
}

//Cuando cambiamos la canción seleccionada en la lista... cargamos la nueva canción, y ejecutamos
function alCambiar (evento){
   if (evento.type == "change"){
      index = lista.selectedIndex;
      player.setMedia("musica/"+lista.selectedItem.data, "MP3");
      player.play();
   }
};

function complete( evt:Object ):Void
{
   var delta:Number = index + 1;
   delta = ( delta < lista.length )? delta : ( repetir ? 0 : undefined ) ;
   lista.selectedIndex = delta;
   if( delta === undefined )
   {
      player.setMedia(undefined);
   }
   else
   {
      alCambiar ({type:"change", target:lista});
   }
}


Variables nuevas


Código ActionScript :

var index:Number = 0;
var repetir:Boolean = true;

"index" indicara la posicion en la lista de reproduccion.
"repetir" es un Boolean que controla que si es el ultimo elemento, salte de nuevo al incio o se detenga, puedes agregar una checkBox que modifique el valor de repetir, para que el usuario sea quien decida.

Eventos nuevos


Código ActionScript :

player.addEventListener("complete", this);

El evento "complete" de la clase Media, indica cuando ha llegado al final de la cancion, el listener sera "this" que se refier al _root, significa que la funcion complete debe estar en el _root

Funciones nuevas


Código ActionScript :

function complete( evt:Object ):Void
{
   var delta:Number = index + 1;
   delta = ( delta < lista.length )? delta : ( repetir ? 0 : undefined ) ;
   lista.selectedIndex = delta;
   if( delta === undefined )
   {
      player.setMedia(undefined);
   }
   else
   {
      alCambiar ({type:"change", target:lista});
   }
}

La funcion "complete" se ejecutara con el evento de "player", aqui es donde tenemos que reproducir la siguiente cancion y validamos "repetir".
Como puedes observar, la variable delta controla el proceso, si es igual a undefined, significa que se llego al ultimo elemento de la lista y "repetir" es flaso. "player.setMedia( undefined )" trata de cargar una cancion inexistente, lo que es igual a detener las reproducciones. si delta no es undefined, entonces ejecutamos la funcion "alCambiar" simulando una especie de click en la lista, esto hara que se ejecute el item seleccionado previamente igualado a "delta";

Funciones modificadas


Código ActionScript :

index = lista.selectedIndex;

En la funcion "alCambiar" agrege esta linea de codigo que actualiza la seleccion de la lista.

Eso es todo, Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 27 Ene 2009 08:10 pm
Guuuuaaaaahhh alta explicacion!!! Genio no solo que te molestaste en responderme con lujo de detalles si no que funciono a la perfeccion, solo tuve que volver a acomodar las medidas del reproductor y modificar "musica" por "mp3" que es la carpeta donde estan las canciones guardadas mi carpeta.

MUCHAS PERO MUCHAS GRACIAS !!!

Por Clas

8 de clabLevel



 

Argentina Buenos Aires

firefox
Citar            
MensajeEscrito el 27 Ene 2009 08:23 pm
:D por lo general lo hago con los proyectos que me parecen mas interesantes resolver, Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 03 Abr 2009 04:33 pm
Que buena guia LongeVie, en verdad que ha sido de gran ayuda.... ya las canciones pasan a la siguiente sin problema.. gracias!!!
Ahora bien me queda un solo inconveniente... como logro que apenas se carge la pagina empiece a reproducir la primera cancion??
En verdad quedo muy agradecido por la ayuda!!!

Salu2

Por daraca

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Abr 2009 02:44 am

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.