Comunidad de diseño web y desarrollo en internet online

no puedo devolverme en un indice de un xml

Citar            
MensajeEscrito el 20 Ago 2005 05:55 pm
hola, tengo un problema con un indice
tengo un codigo que muestra en un campo de texto un texo "DESCRIPCION"que esta en un xml. Con un boton next_mc voy mostrando el texto:

Código :

next_mc.onPress = function() {

   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;

   nodo++;

   trace("nodo="+nodo);

   if (nodo>=largo) {

      nodo = 0;

   }

};

el problema es para mostrar el texto anterior con el boton prev_mc:

Código :

prev_mc.onPress = function() {

   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;

   trace("nodo="+nodo);

   nodo--;

   if (nodo<=largo) {

      nodo = 0;

   }

};

al clicarlo no muestra el texto anterior, no retrocede se queda donde mismo o pasa a 0
que pasa?
me dijeron que no funcionaba por que el valor de nodo siempre valia 1 mas que el texto del indice actual que se esta mostrando
pero si es asi como retrocedo en el indice ?? ya que restandole 1 o 2 a nodo tampoco resulta
aqui esta el xml:

<lista>
<producto>
<texto>DESCRIPCION 0</texto >
<jpg>fotos/foto0.jpg</jpg>
</producto>

<producto>
<texto>DESCRIPCION 1</texto >
<jpg>fotos/foto1.jpg</jpg>
</producto>

<producto>
<texto>DESCRIPCION 2</texto >
<jpg>fotos/foto2.jpg</jpg>
</producto>

<producto>
<texto>DESCRIPCION 3</texto >
<jpg>fotos/foto3.jpg</jpg>
</producto>

<producto>
<texto>DESCRIPCION 4</texto >
<jpg>fotos/foto4.jpg</jpg>
</producto>


</lista>

y aqui el codigo:

Código :

//creo objeto xml

var nodo = 0;

trace("nodo="+nodo);

var my_xml = new XML();

my_xml.ignoreWhite = true;

//se cargan los datos

my_xml.load("fuentedatos/fotos.xml");

//al llegar los datos se ejecuta esto

my_xml.onLoad = function() {

   largo = this.firstChild.childNodes.length;

};



next_mc.onPress = function() {

   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;

   nodo++;

   trace("nodo="+nodo);

   if (nodo>=largo) {

      nodo = 0;

   }

};

prev_mc.onPress = function() {

   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;

   trace("nodo="+nodo);

   nodo--;

   if (nodo<=largo) {

      nodo = 0;

   }

};
[/code]

Por Gon

23 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Ago 2005 06:05 pm
por logica, no te funciona fijate:

extracto de tu codigo

Código :

nodo--;

   if (nodo<=largo) {

 nodo = 0; 

Si nodo empieza desde 0 y le das al boton previo, entonces quedaria en -1 por lo que la condicion seria verdadera y nodo valdra 0 nuevamente y volvemos a lo mismo otra vez 0 luego -1 si es menor que 0 entonces nodo lo igualamos a 0, se repite, corrige la asignación :wink:

yo lo haria asi:

Código :

(nodo-1==-1)?nodo=largo-1:nodo--;

y para el boton siguiente así:

Código :

(nodo+1==largo)?nodo=0:nodo++;

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Ago 2005 06:17 pm
no sé, pero me parece que debes incrementar y decrementar la var nodo; y la comprobacion de nodo tambien antes de asignarle el texto al campo.

Código :

next_mc.onPress = function() {
   nodo++;
   if (nodo>largo-1) {
      nodo = 0;
   }
   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;
   trace("nodo="+nodo);
};

prev_mc.onPress = function() {
   nodo--;
   if (nodo<0) {
      nodo = largo-1;
   }
   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;
   trace("nodo="+nodo);
};
 


eso creo....

Por Altrix

156 de clabLevel



 

Cuba, Ciudad de la Habana

firefox
Citar            
MensajeEscrito el 20 Ago 2005 06:19 pm
por cierto Bienvenido a CLab... :wink:

Por Altrix

156 de clabLevel



 

Cuba, Ciudad de la Habana

firefox
Citar            
MensajeEscrito el 20 Ago 2005 06:40 pm
Gracias Maikel
casi funciona pero al estarse mostrando el texto 3 y clicar prev_mc para volver al texto 2 pasa al 4, si clicas otra vez prev_mc ahi si vuelve a 3 y si sigues clicando pasa a 2 a 1 a 0 y despues pasa a 4

ese es el unico problema que tiene, antes de empezar a retroceder primero avanza 1 ( si esta mostrando el texto 4 y clicas para retroceder pasa a 0)
lo puse asi:

Código :

prev_mc.onPress = function() {
   clip.descripcion_txt.text = my_xml.firstChild.childNodes[nodo].childNodes[0].firstChild;
   trace("nodo="+nodo);
   nodo--;
   if (nodo<=-1) {
      nodo = largo-1
   }
};

muchas gracias y ayudame solo un poco mas porfavor


:D

Por Gon

23 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Ago 2005 06:56 pm
Hola, Altrix no habia visto tu respuesta,
revisare el codigo otravez
GRACIAS :D

Por Gon

23 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Ago 2005 06:59 pm
primero usa onRelease no onPress, veras hay una pequeña entre ellos dos
onRelease: es cuando haces click y sueltas el boton.
onPress: es cuando haces click y mantienes presionado el mouse

ahora no entiendo el error que te da, pusiste los dos códigos que te di, debes poner ambos y te funcionará el de boton siguiente y el anterior

boton siguiente

Código :

(nodo+1==largo)?nodo=0:nodo++;

boton anterior

Código :

(nodo-1==-1)?nodo=largo-1:nodo--;


corrida en frio, para nodo = 0 y largo=5.

presionamos boton anterior: preguntamos ¿nodo-1 es igual a -1? si porque nodo es igual a 0 y menos uno es igual a -1, entonces nodo es igual a largo-1, nodo queda en 4
presionamos boton siguiente, ¿nodo+1 es igual a 5? si porque nodo es igual a 4 entonces nodo es igual a 0, nodo queda en 0
presionamos boton siguiente ¿nodo+1 es igual a 5? no porque nodo es igual 0 y mas uno es igual a 1, entonces nodo es igual a nodo+1, nodo queda en 1;
presionamos boton anterior ¿nodo-1 es igual a -1? no porque nodo es igual 1 y menos uno es igual a 0, entonces nodo es igual a nodo-1, nodo queda en 0.


:D

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Ago 2005 12:31 am
MUCHAS GRACIAS MAIKEL!!!! :D :D
funciona muy bien, jumping, jumping!!

lo unico raro es que al final del texto aperece el numero del nodo,
osea si carga el texto del nodo 1 al final del texto aparece 1
se puede eliminar eso??

GRACIAS de nuevo

Por Gon

23 de clabLevel



 

safari

 

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