Comunidad de diseño web y desarrollo en internet online

Problema con funciones para escribir un texto

Citar            
MensajeEscrito el 29 Sep 2007 06:19 pm
Hola! Soy nuevo en Cristalab, pero de registrarme. Lo digo porque desde hace muchíiisimo tiempo entro para "ayudarme" con los tutoriales tan buenos que hacéis entre todos los usuarios :D

Os explico mi duda. Estoy creando una especie de aplicación tipo Terminal, para una especie de webOS.
La ventana tiene 4 partes:
Un texto estático arriba que contiene todos los comandos posibles.
Un tetInput en el que escribes el comando. {se llama terminal}
Un botón que, al pulsarlo, comprueba si el comando es correcto y ejecuta la función del mismo.
Un textArea justo arriba del Input que recibe un texto del botón de comprobación, dependiendo de la función. {se llama terminalresult}

El código del botón es este:

on (release){
if (terminal.text == "Open Usuario/Aplicaciones/Hello World"){
_root.AppHW.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Open Usuario/Aplicaciones/Escritor"){
_root.AppEscritor.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Open Usuario/Aplicaciones/Calculadora"){
_root.AppGrafic.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Open Usuario/Imagenes/MacVerde"){
_root.AppMacVerde.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "BringToFront Usuario/Aplicaciones/Hello World"){
mx.behaviors.DepthControl.bringToFront(_root.AppHW);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "BringToFront Usuario/Aplicaciones/Escritor"){
mx.behaviors.DepthControl.bringToFront(_root.AppEscritor);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "BringToFront Usuario/Aplicaciones/Calculadora"){
mx.behaviors.DepthControl.bringToFront(_root.AppGrafic);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "BringToFront Usuario/Imagenes/MacVerde"){
mx.behaviors.DepthControl.bringToFront(_root.AppMacVerde);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Close Usuario/Aplicaciones/Hello World"){
_root.AppHW.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Close Usuario/Aplicaciones/Escritor"){
_root.AppEscritor.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Close Usuario/Aplicaciones/Calculadora"){
_root.AppGrafic.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
if (terminal.text == "Close Usuario/Imagenes/MacVerde"){
_root.AppMacVerde.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
else{
terminalresult.text = "El comando que has escrito no existe o es indetectable.";
}
}



Mi problema es que cualquier comando que ponga, el textArea recibe el texto de negación, es decir, como si no hubiera comprendido el comando. Lo curioso es que, si el comando es verdadero,
la primera función de cada uno (que es un gotoAndStop de un movieclip) sí que la cumple. Así que nada me cuadra.
Vamos, que me abre la "aplicación" correspondiente, pero siempre me pone "El comando que has escrito no existe o es indetectable."

Bueno, gracias por la ayuda que me podáis prestar ^^

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Sep 2007 06:23 pm
Por cierto, se me olvidó decir de que estoy hablando de AS2 ;)

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Sep 2007 08:11 pm

Mixalberto escribió:

Por cierto, se me olvidó decir de que estoy hablando de AS2 ;)
No hacía falta. Ese código es indudablemente AS2 / AS1.

La verdad, no parecería estar mal. Por lo que te recomiendo 3 cosas (podés hacer 1, 2, o las 3, en cualquier orden):

1) Cambiá la secuencia de ifs por un switch es más fácil encontrar los errores de esa manera.
2) Usá trace intensivamente para ver qué es exactamente lo que ocurre.
3) Hacé un debug.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 29 Sep 2007 08:32 pm
He usado trace en todas las opciones (sustituyendo al escritura del texto al textArea) y aun asi siempre me pone el texto del else. Y la del switch nunca me he alcarado con los distintos casos: si quiero solo una solución he de poner unicamente default? eso me lo permitiría? :? Lo sé.. soy un poco torpe :P .Voy a probar con el debug.. a ver qué sale. Gracias :D

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Sep 2007 08:36 pm
WAIT!

Lo que hacés con el trace está mal. Deberías tracear lo que está dentro de los ifs.

Respecto al switch, creo que es bastante sencillo. Especificás cada caso con "case" y si no se cumplen las condiciones, se ejecuta el default (que puede existir o no). En tu caso, el default sería eso de "El comando que has escrito no existe o es indetectable."

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 29 Sep 2007 08:51 pm
He probado a quitarle la función de else y funciona, es decir, me da el mensaje de "Ok..", porque cuando pongo un texto falso no hace ninguna respuesta. ¿será cosa de cómo he escrito el else? :S

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Sep 2007 09:03 pm
Ahora me doy cuenta. Ese problema se debe a que (excepto el primero) deberías convertir todos los ifs a else ifs.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 29 Sep 2007 09:13 pm
síiiiii!!
funciona!
muchísimas gracias, HernanRivas! Gracias por todo, de verdad :D


Pego el código por si a alguien le sirve de inspiración :lol: :

on (release){
if (terminal.text == "Open Usuario/Aplicaciones/Hello World"){
_root.AppHW.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Open Usuario/Aplicaciones/Escritor"){
_root.AppEscritor.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Open Usuario/Aplicaciones/Calculadora"){
_root.AppGrafic.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Open Usuario/Imagenes/MacVerde"){
_root.AppMacVerde.gotoAndStop(2);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "BringToFront Usuario/Aplicaciones/Hello World"){
mx.behaviors.DepthControl.bringToFront(_root.AppHW);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "BringToFront Usuario/Aplicaciones/Escritor"){
mx.behaviors.DepthControl.bringToFront(_root.AppEscritor);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "BringToFront Usuario/Aplicaciones/Calculadora"){
mx.behaviors.DepthControl.bringToFront(_root.AppGrafic);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "BringToFront Usuario/Imagenes/MacVerde"){
mx.behaviors.DepthControl.bringToFront(_root.AppMacVerde);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Close Usuario/Aplicaciones/Hello World"){
_root.AppHW.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Close Usuario/Aplicaciones/Escritor"){
_root.AppEscritor.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Close Usuario/Aplicaciones/Calculadora"){
_root.AppGrafic.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
else if (terminal.text == "Close Usuario/Imagenes/MacVerde"){
_root.AppMacVerde.gotoAndStop(1);
terminalresult.text = "Ok. Comando detectado.";
}
else{
terminalresult.text = "El comando que has escrito no existe o es indetectable.";
}
}

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Sep 2007 09:28 pm
Ahora, otra duda que me surge. Cómo puedo hacer para que, en las respuestas, en vez de convertir el texto de terminalresult a lo que ponga, se añada? es decir, que si hago varias peticiones seguidas, los textos anteriores se guarden en el textArea a modo de log.
Algo como, en vez de igualar texto, como se hace en el código, añadirlo.

Por Mixalberto

25 de clabLevel



Genero:Masculino  

safari

 

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