Foros del Web » Creando para Internet » Flash y Actionscript »

Solo para expertos

Estas en el tema de Solo para expertos en el foro de Flash y Actionscript en Foros del Web. A traves de un XML que contiene la siguiente informacion: <?xml version="1.0" encoding="UTF-8"?> <musica> <tema> <nombre>My Sacrifice</nombre> <artista>creed</artista> <duracion>294922</duracion> <bitRate>192</bitRate> <clasificacion>Internacional</clasificacion> </tema> <tema> <nombre>I like ...
  #1 (permalink)  
Antiguo 20/04/2004, 13:36
 
Fecha de Ingreso: febrero-2004
Ubicación: alicante
Mensajes: 28
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación Solo para expertos

A traves de un XML que contiene la siguiente informacion:

<?xml version="1.0" encoding="UTF-8"?>
<musica>
<tema>
<nombre>My Sacrifice</nombre>
<artista>creed</artista>
<duracion>294922</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>I like a bird</nombre>
<artista>Nelly Furtado</artista>
<duracion>249025</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Sexual Revolution</nombre>
<artista>Macy Gray</artista>
<album>The ID</album>
<duracion>285962</duracion>
<año>2001</año>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Turn Off the Light</nombre>
<artista>Nelly Furtado</artista>
<duracion>273502</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>All The Love</nombre>
<artista>The Outfield</artista>
<duracion>210703</duracion>
<bitRate>160</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Cosas imposibles</nombre>
<artista>Gustavo Cerati</artista>
<album>Siempre es hoy</album>
<duracion>307565</duracion>
<bitRate>128</bitRate>
<clasificacion>Nacional</clasificacion>
</tema>
<tema>
<nombre>By the Way</nombre>
<artista>Red Hot Chili Peppers</artista>
<album>By The Way</album>
<duracion>257567</duracion>
<año>2002</año>
<bitRate>128</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
</musica>

Puedo filtrar la informacion a traves del siguiente codigo y con ayuda de tres radiobuton (uno de 192,160,128) cuyo nombre de grupo es bitRate, los datos aparecen en un datagrid actualizado.El codigo es el siguiente:

// Creamos y Cargamos el Objeto XML
miMusica = new XML();
miMusica.ignoreWhite = true;
miMusica.onLoad = function(resultado) {
if (resultado) {
misTemas = miMusica.firstChild.childNodes;
datosDeTemas = [];
for (i in misTemas) {
var matrizDatos = misTemas[i].childNodes;
var objetoTemp = new Object();
for (datos in matrizDatos) {
var nombreDato = matrizDatos[datos].nodeName;
var valorDato = matrizDatos[datos].firstChild;
objetoTemp[nombreDato] = valorDato;
}
datosDeTemas.push(objetoTemp);
delete (objetoTemp);
}
miDataGrid.removeAllColumns();
miDataGrid.hScrollPolicy = "on";
miDataGrid.maxHPosition = 200;
miDataGrid.dataProvider = datosDeTemas;
} else {
trace("Hubo un problema con la carga del XML");
}
};
miMusica.load("musica.xml");
//
// Texto Inicial del DataGrid
miDataGrid.dataProvider = [{Estado:"Cargando Datos Externos"}, {Estado:"Espere Por Favor"}];
//
// Escuchador de RadioButtno
escuchador = new Object();
escuchador.click = function(esto) {
dato = esto.target.groupName;
valor = esto.target.selection.label;
filtrar(dato, valor);
};
bitRate.addEventListener("click", escuchador);
//
// Funcion para filtrar Datos
function filtrar(dato, valor) {
var temasTemp = [];
for (i in datosDeTemas) {
var objetoTemp = datosDeTemas[i];
// El string se debe a que sino no le da la cabeza para comparar un Objeto con una cadena.
if (String(objetoTemp[dato]) == valor) {
temasTemp.push(objetoTemp);
}
}
miDataGrid.removeAllColumns();
miDataGrid.dataProvider = temasTemp;
}

Mi problema es el siguiente, por mas que lo intento no consigo introducir otro grupo de radiobuton que me reduzca la información aun mas, es decir, que el listado se reduzca con el filtrado del bitrate y se reduzca aun mas al seleccionar el otro grupo de radiobutons(por ejemplo por el año).

Otra consulta seria, como mostrar los datos en el datagrid de una pelicula cargada a traves de un boton (es decir, filtrar la informacion para una serie de grupos de radiobutons y al pulsar un boton de busqueda cargar una pelicula o instancia con un datagrid y los resultados).

Gracias y perdonad por la lectura tan ardua¡¡¡
__________________
alo
  #2 (permalink)  
Antiguo 21/04/2004, 12:12
 
Fecha de Ingreso: febrero-2004
Ubicación: alicante
Mensajes: 28
Antigüedad: 20 años, 9 meses
Puntos: 0
Nadie me contesta¡¡¡
__________________
alo
  #3 (permalink)  
Antiguo 22/04/2004, 15:51
 
Fecha de Ingreso: marzo-2003
Ubicación: valencia
Mensajes: 68
Antigüedad: 21 años, 7 meses
Puntos: 0
creo, que no te he entendido demasiado bien.
de todas maneras, me parece que es una forma un tanto desordenada de organizar este script.
en mi opinion lo ideal y sencillo es que el resultado de el xml sea un array multidimensional, de manera que nos sea mas facil acceder a su contenido. De todas formas si me puedes intentar explicar que es lo que quieres conseguir y cual es el problema, con un poco mas de claridad, tal vez te pueda ayudar.

un saludo
  #4 (permalink)  
Antiguo 22/04/2004, 21:36
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Esta muy bien lo que queres hacer... la idea de filtrado es correcta.

no entiendo como es que comparas un objeto con un dato tipo string
Me refiero a esto...
------------------------------------------------------
// El string se debe a que sino no le da la cabeza para comparar un Objeto con una cadena.
if (String(objetoTemp[dato]) == valor) {
-----------------------------------------------------
Ej:....... undefined == 192

Decime si estoy equivocado... ya que es una duda que me surgio al ver el codigo....

Una pregunta... el filtrado x bitRate... funciona asi como esta el codigo???
__________________
tech-nico.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.