Comunidad de diseño web y desarrollo en internet online

PROBLEMILLA CON MP3 PLAYER

Citar            
MensajeEscrito el 12 Dic 2009 08:30 am
Buenasss!!tengo un problemilla, a ver si me podeis ayudar por el foro!!Mi cuestion es la siguiente:
tengo un MP3 player en mi web, que tiene 4 botones(1,2,3 y STOP), con la cual quiero reproducir 3 canciones. Lo tipico, se abre la web, carga la 1 cancion y la reproduce, cuando termina la 1, se carga la 2 y se reproduce. Hasta hay todo bien, el problema viene cuando el usuario pulsa en el MP3 Player cualquier boton ya sea 1,2 o 3. Lo lógico es que el texto cambie y salga el nombre de la cancion en cuestion, pero no es asi. Por poner un ejemplo, si el usuario está escuchando la 1 cancion que se llama "LADY GAGA - JUST DANCE" por ejemplo, y pulsa el boton 2 para escuchar "MASTIKSOUL - JACOBINO", en vez de aparecer ese texto en el cuadro, la cancion se reproduce pero el texto se queda pillado y me marca un 100% fijo...y así con todas. Solo pasa cuando se pulsa un boton, cuando cambian solas xk se terminan salen los textos de los titulos perfectamente. No tengo ni idea de que puede ser, os dejo el codigo por si me podeis ayudar!!saludosssss y graciasssss

Código ActionScript :

function cargar_mp3(mp3,variable) {
   cancion = new Sound();
   cancion.loadSound(mp3,true);
   
   this.onEnterFrame = function() {
      BytesLoaded = cancion.getBytesLoaded();
      BytesTotal = cancion.getBytesTotal();
      porcentaje = Math.floor(BytesLoaded/BytesTotal*100);
      if (!isNaN(porcentaje)) {
         estado.text = porcentaje+"%";
      }
   }
//////////////////////////////////////
   _root.cancion.onSoundComplete = function() {
    if (variable==1)
       cargar_mp3("http://www.manueldj.net/2.mp3",2);
   else if(variable==2)
       cargar_mp3("http://www.manueldj.net/3.mp3",3);
    else
      cargar_mp3("http://www.manueldj.net/1.mp3",1);
   }
/////////////////////////////////////////////
   if(variable==1)
   {
   cancion.onLoad = function() {
      delete onEnterFrame;
      estado.text = "LADY GAGA - JUST DANCE";}
   }
   else if(variable==2)
   {
   cancion.onLoad = function() {
      delete onEnterFrame;
      estado.text = "DJ FARI - CARABIDURI";}
   }
   else if(variable==3)
   {
   cancion.onLoad = function() {
      delete onEnterFrame;
      estado.text = "MASTIKSOUL - JACOBINO";}
   }
};

cargar_mp3("http://www.manueldj.net/1.mp3",1); //Llama a la 1 cancion y la pone a sonar
   
b_stop.onRelease = function() {
   cancion.stop();
   delete onEnterFrame;
   estado.text = "STOP";
};

Por manueldj

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 12 Dic 2009 06:50 pm
PARA EMPEZAR ESA FORMA K USAS PARA CARGAR EL MP3 NO ES MUY RECOMENDADO ES MEJOR HACERLO MAS AL ESTILO NORMAL MIRA ESTE LINK A VER SI TE SIRVE espero te sirva saludos
http://www.taringa.net/posts/info/921112/Tutorial-Samu-para-hacer-un-reprod-MP3-en-flash.html

Por tjmysteri

Claber

138 de clabLevel



 

msie8
Citar            
MensajeEscrito el 12 Dic 2009 09:47 pm
Lo único raro que hizo, fue agregar un preloader, para cargar todo antes. Pero entonces quitael el streaming y pon false. O meramente quita el preloader.

Fuera de eso, recomendar REEMPLAZAR TODO, no es una buena ni practica idea. ¿Por que tjmysteri, todo lo resuelves con códigos aparte? La idea es orientar con algo así, a quien pregunte... "Como hago un mp3 player", no para el que ya lo armo y tiene inconvenientes.

En cuanto al problema en cuestión... manueldj, cual es el código que usas para "cambiar" entre canciones?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 13 Dic 2009 07:57 am
ups...sorry, me falta el código que se tiene que ejecutar cuando pulso cualquier boton(1,2,3) que es el siguiente:

Código ActionScript :

boton1.onRelease = function() {
   cargar_mp3("http://www.djnecro.net/intro/1.mp3",1);
};

boton2.onRelease = function() {
   cargar_mp3("http://www.djnecro.net/intro/2.mp3",2);
};

boton3.onRelease = function() {
   cargar_mp3("http://www.djnecro.net/intro/3.mp3",3);
};


Ese es el codigo de los botones, si pulso el 1,el 2 o el 3 llama a la funcion "cargar_mp3" pasandole la dirección del archivo mp3 y un numero que sera la variable cuya funcion recogerá para asi saber de que cancion se trata:

Código ActionScript :

//Si la variable es 1, que muestre el texto LADY GAGA - JUST DANCE
if(variable==1)    
{    
cancion.onLoad = function() {       
delete onEnterFrame;       
estado.text = "LADY GAGA - JUST DANCE";}   
 } 

gracias x contestar y a ver si dais con la tecla xk no se me ocurre mas nada!!

Por manueldj

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 13 Dic 2009 12:23 pm
manueldj, tu código no estaba del todo bien pensando, ya que usaba de manera incorrecta el objeto Sound, y sus listeners, además de pisarse varias veces con el propio enterFrame. Lo que hice fue tomarme la libertad de editar tu código para que sea más eficiente y ordenado, hace lo mismo pero imagino que con esto no deberías tener más problemas.

Lo comente casi linea por linea para que entiendas porque se hicieron los cambios que se hicieron

Código ActionScript :

// Creo el objeto de sonido por única vez
var cancion:Sound = new Sound();
// Trackeo de manera más eficiente la variable del Index de reproducción, de esta forma no habrán problemas
var index_song:Number;
// Cargo las canciones que reproducire
var canciones:Array = ["LADY GAGA - JUST DANCE", "DJ FARI - CARABIDURI", "MASTIKSOUL - JACOBINO"];
// Cargo el path del servidor a donde buscar los mp3
var path_server:String = "http://www.manueldj.net/";

// Defino el listener por única vez de lo que sucede al terminar una canción
cancion.onSoundComplete = function() {

   // Si el index es igual a la cantidad total de canciones reseteo todo, sino cargo el index+1
   if (index_song != canciones.length) {
      cargar_mp3(index_song+1);
   } else {
      cargar_mp3(1);
   }

};

// Defino el listener que se ejecuta cuando se carga un nuevo sonido por única vez
cancion.onLoad = function(success) {

   // Si se cargó bien el mp3 proceso en mostrar el texto en index-1 (Porque los arrs cuentan desde 0)
   if (success) {
      estado.text = canciones[index_song-1];
   } else {
      estado.text = "Error en la carga";
   }

};

// Función principal de carga 
function cargar_mp3(index):Void {

   // Asigno la variable nueva de tracking
   index_song = index;
   // Detengo si había sonidos anteriores
   stopSound();
   // Cargo en Streaming la nueva canción
   cancion.loadSound(path_server+index_song+".mp3",true);
   // Informo que estoy cargando al buffer la canción (No toda, solo lo necesario)
   estado.text = "Buffering...";

}

// Función para detener el sonido
function stopSound():Void {
   cancion.stop();
   estado.text = "STOP";
}

// Función para ejecutar cargar_mp3
function run_carga(index):Void {
   cargar_mp3(this.id);
}
// Inicializo el código en la primera canción
cargar_mp3(1);

// Asigno el código de detener (stop) al botón de stop
b_stop.onRelease = stopSound;

// Asigno las acciones a los 3 botones para cambiar de canción
for (var i = 0; i<3; i++) {

   _root["boton"+i].id = i;
   _root["boton"+i].onRelease = run_carga;
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 13 Dic 2009 08:32 pm
muchas gracias hernan!!me vino de perlas, soy novatillo todavia en actionscript y no se manejar los arrays y demas!!pero aora funciona correctamente!!1 saludooo y thxx

Por manueldj

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 13 Dic 2009 08:39 pm
ups!!creia que todo bien pero me sigue dando fallos...e implementado tu codigo hernan y cuando pulso un boton para cambiar de cancion(1,2 o 3) y la cancion está cargada al 100%, suena la cancion y el texto se me pone en Buffering...y ay se queda sin mostrar el titulo de la cancion :(. Es muy raro ya que en las pruebas previas que hago con Flash Player CS4 funciona bien si pulso un boton para cambiar de cancion, pero una vez que lo subo a la web y lo pruebo en el explorador Internet Explorer me pasa esto. Realmente muy raro todo xD

Por manueldj

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 13 Dic 2009 09:02 pm
Pues como no tengo el source file, me cuesta testear que podría ser, pero me imagino el listener onLoad no esta funcionando. Así que rediseñe un poco el código:

Código ActionScript :

// Creo el objeto de sonido por única vez 
var cancion:Sound = new Sound();
// Trackeo de manera más eficiente la variable del Index de reproducción, de esta forma no habrán problemas 
var index_song:Number;
// Cargo las canciones que reproducire 
var canciones:Array = ["LADY GAGA - JUST DANCE", "DJ FARI - CARABIDURI", "MASTIKSOUL - JACOBINO"];
// Cargo el path del servidor a donde buscar los mp3 
var path_server:String = "http://www.manueldj.net/";

// Defino el listener por única vez de lo que sucede al terminar una canción 
cancion.onSoundComplete = function() {

   // Si el index es igual a la cantidad total de canciones reseteo todo, sino cargo el index+1 
   if (index_song != canciones.length) {
      cargar_mp3(index_song+1);
   } else {
      cargar_mp3(1);
   }

};

function preload():Void {

   if (cancion.getBytesLoaded()/cancion.getBytesTotal()) {
      estado.text = canciones[index_song-1];
      clearInterval(id);
   } else {
      estado.text = "Buffering...";
   }

}
// Función principal de carga  
function cargar_mp3(index):Void {
   // Asigno la variable nueva de tracking 
   index_song = index;
   // Detengo si había sonidos anteriores 
   stopSound();
   // Cargo en Streaming la nueva canción 
   cancion.loadSound(path_server+index_song+".mp3",true);
   // Informo que estoy cargando al buffer la canción (No toda, solo lo necesario) 
   id = setInterval(preload, 300);
}

// Función para detener el sonido 
function stopSound():Void {
   cancion.stop();
   estado.text = "STOP";
}

// Función para ejecutar cargar_mp3 
function run_carga(index):Void {
   cargar_mp3(this.id);
}
// Inicializo el código en la primera canción 
cargar_mp3(1);

// Asigno el código de detener (stop) al botón de stop 
b_stop.onRelease = stopSound;

// Asigno las acciones a los 3 botones para cambiar de canción 
for (var i = 0; i<3; i++) {

   _root["boton"+i].id = i;
   _root["boton"+i].onRelease = run_carga;
}


Prueba a ver si esto funciona.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 13 Dic 2009 11:19 pm
aora si que va!!!muchas gracias hernan!!

Por manueldj

3 de clabLevel



 

msie8

 

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