Comunidad de diseño web y desarrollo en internet online

botón siguiente canción

Citar            
MensajeEscrito el 05 May 2006 03:59 pm
Buenas, estoy haciendo un pequeño reproductor de mp3 con una mini base de datos en xml y he utilizado un el tutorial del libro de ANAYA de AS, pero me surge un problema q no explican en el libro y el cual no consigo solucionar, y es que el botón de ir a la siguiente cancion no consigo programarlo :roll: , bueno he conseguido algo, pero se queda en la siguiente canción despues de la seleccionada en el comboBox, adjunto el código para explicarme mejor

Código :

var pausa:Number = 0;
var estado:Number = 0;
var playlistXML:XML = new XML();
playlistXML.ignoreWhite = true;
var music:Sound = new Sound();
var currentSong:String;
playlistXML.onLoad = function() {
   var tempArray = new Array();
   for (var i = 0; i<this.firstChild.childNodes.length; ++i) {
      tempArray[i] = new Object();
      tempArray[i].label = this.firstChild.childNodes[i].firstChild.nodeValue;
      tempArray[i].data = this.firstChild.childNodes[i].attributes.URL;
   }
   playlist_lb.dataProvider = tempArray;
};
playlistXML.load("playlista.xml");
var playlist_lbListener:Object = new Object();
playlist_lbListener.change = function() {
   currentSong = playlist_lb.selectedItem.data;
};
playlist_lb.addEventListener("change", playlist_lbListener);
play_btn.onRelease = function() {
   music.stop();
   music = new Sound();
   //esto sobraría, solo son los campitos de texto ID3
   music.onID3 = function() {
      song_txt.text = this.id3.TIT2;
      artist_txt.text = this.id3.TPE1;
      year_txt.text = this.id3.TYER;
      URL_txt.htmlText = "<a href=\""+this.id3.WXXX+"\">"+this.id3.WXXX+"\">"+this.id3.WXXX+"</a>";
      comments_txt.text = this.id3.COMM;
   };
   music.loadSound(currentSong, true);
};
//anterior_btn.onRelease = function() {};
////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////[b]AQUI ESTA EL PROBLEMA[/b]//////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
siguiente_btn.onRelease = function() {
   music.stop();
   currentSong = playlist_lb.selectedIndex+1+".mp3";
   music.loadSound(currentSong, true);
   trace(currentSong)
   /*/var siguiente:String;
      siguiente = playlistXML.firstChild.childNodes.nextSibling.data;*/
      
   //var siguiente:String = playlistXML.nextSibling.firstChild.childNodes.attributes.URL;
   //music.loadSound(siguiente, true);
   //trace(siguiente);
};
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
stop_btn.onRelease = function() {
   if (estado == 1) {
      pausa = music.position;
      music.stop();
      estado = 0;
   } else {
      music.start(pausa/1000);
      estado = 1;
   }
};


a ver si alguien me puede echar un manilla... [/code]

Por ATL

28 de clabLevel



 

Madrid

unknown
Citar            
MensajeEscrito el 06 May 2006 11:24 am
Un fallo lo tienes en el código del combo, ya que selectedIndex devuelve un número y no un objeto. Debería ser así:

Código :

cancion = combo.getItemAt(combo.selectedIndex+1).label+".mp3";

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

unknown
Citar            
MensajeEscrito el 08 May 2006 12:14 pm
Gracias zah, ya ves que estoy un poco pez aún... aún así sigo atascadísimo, porque con este código solo consigo que me sume uno a la opcion seleccionada del combo, pero lo que quiero es que valla pasando de canción una tras otra... y no doy con la forma de referirme a los objetos de comboBox

Por ATL

28 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 08 May 2006 02:21 pm
tienes que una vez hecho lo que te enseña zah llamar a la función onrelease del boton, recuerda que es una función y puedes llamarla sin esperar el evento, de esta manera se cargara y reproducira la canión seleccionada.

Saludos

Por Prozac

SWAT Team

1546 de clabLevel

1 tutorial

Genero:Masculino   SWAT

donde se regresa el viento

firefox
Citar            
MensajeEscrito el 08 May 2006 02:36 pm
si el caso es que eso si me funciona bien, es decir, cuando selecciono una canción, genial, todo funciona, el problema es cuando quiero pasar a la siguiente canción sin seleccionarla en el comboBox... es ahí donde no se como referirme a que valla a la siguiente sin que sea a través de la posición de la última seleccionada, porque de esta manera, me hace caso solo poniendo en play la canción inmediata a la seleccionada en la lista(así todas las veces que pulse el boton "siguiente"), ya que posteriormente no he seleccionado ninguna...

Por ATL

28 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 08 May 2006 02:42 pm
ok me explico un poco mejor que no me has entendido:

Código :

music.onSoundComplete = function(){
siguiente_btn.onRelease();
}


Asi deberia funcionar, el onSoundComplete se dispara cuando music ha terminado de reproducirse, una vez pasa esto llamas a la función de siguiente canción(que es en realidad la acción del boton) y listo!

Saludos

Por Prozac

SWAT Team

1546 de clabLevel

1 tutorial

Genero:Masculino   SWAT

donde se regresa el viento

firefox
Citar            
MensajeEscrito el 08 May 2006 03:12 pm
aaah, ok, no lo habia cojido! aún así no me lo coje...
de todas formas, acabo de solucionar el problema, valla tonteria... resulta que la linea donde le digo que valla una más de la seleccinada, funciona perfectamente, solo se me olvidó poner += en vez de +, en fin, todo sea inexperiencia... ahora voy a investigar lo que me has puesto de onSoundComplete

Salud

Por ATL

28 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 09 May 2006 10:40 am
bien... la cosa va bien... de momento ya conseguí lo de el boton siguiente canción, lo que sucede ahora es q no se por q narices no me hace caso el evento onSoundComplete, adjunto el codigo x si alguien supiera el motivo

Código :

fscommand("showmenu", false);
fscommand("allowscale", false);
/////////////////////////////////////////////
//////////////esta es la maldita linea//////////
/////////////////////////////////////////////
music.onSoundComplete = adelante;
/////////////////////////////////////////////
/////////////////////////////////////////////
/////////////////////////////////////////////
//VARIABLES
var pausa:Number = 0;
var estado:Number = 0;
var playlistXML:XML = new XML();
playlistXML.ignoreWhite = true;
var music:Sound = new Sound();
var currentSong:String;

//FUNCION "PLAY"
function empieza() {
   music.stop();
   music = new Sound();
   music.loadSound(currentSong, true);
   estado = 1;
}
//FUNCION "SIGUIENTE CANCION"
function adelante() {
   if (playlist_lb.selectedIndex<(playlistXML.firstChild.childNodes.length-1)) {
      currentSong = playlist_lb.getItemAt(playlist_lb.selectedIndex += 1).data;
      empieza();
   }
}
/*music.onSoundComplete = function (){
   trace("onSoundComplete lo coje")
   adelante();
}*/
//DATOS DEL XML A OBJETO playlistXML
playlistXML.onLoad = function() {
   var tempArray = new Array();
   for (var i = 0; i<this.firstChild.childNodes.length; ++i) {
      tempArray[i] = new Object();
      tempArray[i].label = this.firstChild.childNodes[i].firstChild.nodeValue;
      tempArray[i].data = this.firstChild.childNodes[i].attributes.URL;
   }
   playlist_lb.dataProvider = tempArray;
};
playlistXML.load("playlista.xml");
var playlist_lbListener:Object = new Object();
playlist_lbListener.change = function() {
   currentSong = playlist_lb.selectedItem.data;
   empieza();
};
playlist_lb.addEventListener("change", playlist_lbListener);

//BOTONES
play_btn.onRelease = function() {
   empieza();
};
anterior_btn.onRelease = function() {
   if (playlist_lb.selectedIndex>0) {
      currentSong = playlist_lb.getItemAt(playlist_lb.selectedIndex -= 1).data;
      empieza();
   }
};
siguiente_btn.onRelease = function() {
   adelante();
};
stop_btn.onRelease = function() {
   if (estado == 1) {
      pausa = music.position;
      music.stop();
      estado = 0;
   } else {
      music.start(pausa/1000);
      estado = 1;
   }
};


Miles de Gracias Prozac y zah

Por ATL

28 de clabLevel



 

Madrid

firefox

 

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