Comunidad de diseño web y desarrollo en internet online

XML + texto dinámico ¿Cómo aplicar sentencia IF?

Citar            
MensajeEscrito el 09 Mar 2010 04:26 pm
Hola que tal es mi primer día en cristalab aunque hace años que aprendo de el es mi primer pregunta y soy usuario nuevo y novato :P
Mi pregunta es sobre XML en flash 8 pero ningún tema de cómo cargar ni nada de eso es sólo aplicar una sentencia if a un campo de texto dinámico que previamente se cargo desde un xml. En esta pregunta trato de simplificar al máximo el proyecto cosa de no hacer scrip muy largos. Bueno mi problema es el siguiente:
Tengo el siguiente xml llamado “nico.xml” (en la misma ruta que mi swf) como verán quedo bien simple aunque no es así pero con que funcione este ejemplo lo demás va por mi cuenta:

<?xml version="1.0" encoding="utf-8"?>
<CONTANIDO>
<texto1>si</texto1>
<texto2>solo texto dinamico</texto2>
<texto3>solo texto dinamico</texto3>
<texto4>solo texto dinamico</texto4>
<texto5>solo texto dinamico</texto5>
<texto6>solo texto dinamico</texto>
</CONTENIDO>

Ahora desde mi flash cargo los textos en dos campos de textos dinámicos el primero con nombre de instancia “importante ” y el segundo con el nombre de instancia “comun” acá pongo la acción que se encuentra en el primer frame.

content = new XML();
content.ignoreWhite = true;
content.load("nico.xml");
function funcioncarga() {
_root.importante.htmlText = content.firstChild.childNodes[0].firstChild;
_root.comun.htmlText = content.firstChild.childNodes[1].firstChild;
}
content.onLoad = funcioncarga;
stop();

Todo funciona muy bien hasta que quiero hacer una sentencia IF de la siguiente manera, yo quiero que tome el valor que a tomado del xml el campo de texto dinámico con nombre de instancia “importante” en este caso daría = “si” asíque yo quiero que si el campo “importante” es igual (=) a “si”, vaya al fotograma 15 y si no (else) se detenga (stop). He probado de cuanta manera se me cruzó por la cabeza y no lo logré creo que hay algún problema de cómo llamo al campo de texto pero no encuentro el problema pongo un ejemplo que no funcionó para tener un parámetro de donde estoy parado. En el primer fotograma del flash tengo la siguiente acción:

if (importante= = si) {
gotoAndStop(15);
} else {
stop();
}

Bueno parece ser muy fácil pero no pude lograr lo que quiero hacer he probado comillas paréntesis y muchas mas como tomar el nodo directamente pero tampoco funciona aunque quiero que tome el resultado de campo de texto dinámico porque debo tomar varios si desde el xml y sumarlo en el campo de texto dinámico. Bueno sin otro motivo los Saludo atentamente.

Por nicoweb85

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Mar 2010 04:47 pm
if(tutextodinamico.text == "hola"){
trace("hola :D")
}
no se si "importante" sea tu campo de texto, creo que si U_U, debes usar el .text y si, va con comillas :o

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 09 Mar 2010 05:06 pm
Ahi estuve probando tu respuesta y no me anda yo estoy trabajando con flash 8 y me parece que no me exprese bien yo cargo el texto en un campo de texto dinámico que no tiene nombre de variable solo tiene nombre de instancia por eso lo cargo así: _root.importante.htmlText = content.firstChild.childNodes[0].firstChild; . probé igual ademas de poner un nombre de instancia en este caso "importante" agregarle un nombre de variable "respuesta" y puse el código que me recomendaste así:
if (respuesta.text == "si") {
gotoAndStop(15);
} else {
gotoAndStop(1);
}
pero tampoco funciona. Sin duda no debe estar muy lejos de donde estamos la respuesta, igualmente te agradezco un montón y me sorprende la rapidez de la respuesta. Saludos

Por nicoweb85

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Mar 2010 05:12 pm
Aer deja hago eso que estas haciendo del HTMLtext U_U

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 09 Mar 2010 05:15 pm
mm tal vez sea sintaxis escribiste
<CONTANIDO>

y lo cierras con la letra E tiene que ser con la letra A

</CONTENIDO>

y por eso marca error el if

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

msie8
Citar            
MensajeEscrito el 09 Mar 2010 05:19 pm
:) ya, lo que siempre me pasaba, todo if necesita de un listener U_U

Código :

content = new XML();
content.ignoreWhite = true;
content.load("nico.xml");
function funcioncarga() {
   _root.importante.htmlText = content.firstChild.childNodes[0].firstChild;
   _root.comun.htmlText = content.firstChild.childNodes[1].firstChild;
}
content.onLoad = funcioncarga;
stop();
onMouseDown = function () {
   if (importante.text == "si") {
      trace("si :D");
   }
};

Puedes usar el mousedown o un boton o lo que queras
=)

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 09 Mar 2010 05:26 pm
no en este caso no era problema lo cambie y sigue igual, creo que el problema esta en que la sentencia if no interpreta que es el contenido dentro de "importante" (este es el nombre de instancia del campo de texto "no es el var:") el tema de cargar el xml anda bien incluso con la A :) debe ser porque es un solo (firstChild). Igual el problema esta en el IF para mi entender no se llamar bien al campo de texto porque siempre lo llame importante.text o importante.htmlText pero en ese caso es con variable, y aca uso nombre de instancia aunque ya probé llamarlo con el _root y con el this a travez de la ruta de destino pero no funciona. Gracias por la respuesta = muchísimas gracias sigo viendo cual es el problema. Saludos

Por nicoweb85

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Mar 2010 05:54 pm
el davo 29: eso sin duda me funciona, y el if me interpreta si dice "si" no y hace el gotoAndStop que quería el código me quedo asi:
content = new XML();
content.ignoreWhite = true;
content.load("nico.xml");
function funcioncarga() {
_root.importante.htmlText = content.firstChild.childNodes[0].firstChild;
_root.comun.htmlText = content.firstChild.childNodes[1].firstChild;
}
content.onLoad = funcioncarga;
stop();
onMouseDown = function () {
if (importante.text == "si") {
gotoAndStop(15);
} else {
stop();
}
}
ahora me falta sacar el OnMouseDown para que lo haga de forma automática si lo encuentro resumo como y muchísimas gracias por todas la respuestas por ser mi primer día obtuve un trato excelente y con tiempo de demora de 2 a 4 segundos jejeje muchas gracias

Por nicoweb85

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Mar 2010 06:08 pm
el davo29: como puedo hacer para remplazar onMouseDown de modo que se haga automáticamente sin tener que hacer click en un boton ni en la pantalla, no se como hacerlo pense que iba a ser fácil pero se me quemaron loa papeles jeje. Saludos y muchas gracias

Por nicoweb85

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Mar 2010 09:03 pm
Listo anduvo todo muy bien gracias a tu último scrip pude lograrlo porque me di cuenta de que no entraba el if en el momento indicado sabía que era algo fácil solo faltaba alguien me agite un poco las neuronas la solución fue poner la sentencia If un fotograma adelante o sea no en el primero cosa de que flash interprete el contenido del campo de texto dinámico la solución fue el siguiente scrip en el 3º fotograma:
if (importante.text == "si") {
gotoAndStop(15);
} else {
gotoAndStop(30);
}
Agradezco todas las respuestas ahora que soy usuario de cristalab voy a ver si sirvo de ayuda a alguien. Saludos
Nico

Por nicoweb85

18 de clabLevel



 

chrome

 

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