Comunidad de diseño web y desarrollo en internet online

Arreglos de cajas de textos. Es posible? Ayuda por favor!

Citar            
MensajeEscrito el 05 Feb 2009 09:26 pm
Saludos,
He hecho un programita de ortografía. En la escena principal aparecen 10 palabras, 10 cajas de textos y 10 botones evaluar, una para cada palabra. El niño escribe en la caja de texto la palabra de la etiqueta y luego al hacer clic en evaluar va a otra escena según sea el caso, correcto o incorrecto. (Lo anterior ya lo hice) pero rustico, lo quiero optimizar con arreglos y finalmente con una base de datos puesto que serán 1000 palabras y luego diferentes oraciones por cada palabra "MUCHO TRABAJO".
Deseo hacer lo siguiente:
Tener una matriz con unas 10 palabras. (por el momento localmente luego quiero saber como capturarlas de una B.D)
También crear 10 textos dinámicos donde serán asignadas las palabras de la matriz. La asignación la deseo a través de un ciclo.
y finalmente 10 cajas de textos donde el niño introduzca el texto que aparece en la etiqueta.
Todo deseo crearlo con matrices y la asiganación de los valores sea a través de un for.
Lo que no he sabido como hacer (aparte de la conex a B.D) es cómo crear un arreglo de cajas de textos. ¿Podrían ayudarme por favor? :wink:

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Feb 2009 09:13 am
Hola
Una caja de texto la creas asi:

Código ActionScript :

this.createTextField("my_txt", 1, 100, 100, 300, 100);
my_txt.multiline = false;
my_txt.wordWrap = true;
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFF0000;
my_fmt.underline = true;
my_txt.text = "HOLA MUNDO";
my_txt.setTextFormat(my_fmt);

Eso crea una caja de texto dinamico y la pone en el nivel 1, y mide 300x100 y se ubica en _x = 100 y _y = 100

Para crear una caja de introduccion de texto, es casi igual pero se agrega esto:

Código ActionScript :

my_txt.border = true;
my_txt.type = "input";


para crear un Array, es asi:

Código ActionScript :

var textos:Array = new Array();


Para acceder a una base de datos, vas a tener que usar un leguaje de servidor como PHP, y para comunicar a flash con el servidor vas a tener que usar LoadVars, si de todas formas vas a rellenar la BD a tu gusto, osea, tu eres el administrador y nadie mas puede insertar datos, entonces te recomiendo que mejor uses XML asi no necesitarias un lenguaje de servidor intermedio, ni un servidor de base de datos, y modificarias el archivo XML con el Bloc de notas.

Te escribi un sencillo ejemplo de como crear un array de cajas de texto basandonos en un array que contiene las palabras, solo copialo y pegalo en el primer fotograma

Código ActionScript :

var datos_arr:Array = ["Cristal", "Laboratorio", "Melendroso", "Computador", "Extrangero", "Matriarcado", "Virrey", "Suerte", "Amigo"]
var cajas_arr:Array = new Array();
var palabras_arr:Array = new Array();

for( var i:Number = 0; i < datos_arr.length; i++ )
{
var aux:TextField = this.createTextField("caja_" + i, this.getNextHighestDepth(), 100, 30 * i, 300, 25);
aux.multiline = false;
aux.wordWrap = true;
aux.text = "Introduce la palabra...";
aux.border = true;
aux.type = "input";
cajas_arr.push( aux );

aux = this.createTextField("palabra_" + i, this.getNextHighestDepth(), 0, 30 * i, 100, 25);
aux.multiline = false;
aux.wordWrap = true;
aux.type = "dynamic";
aux.text = datos_arr[i];
palabras_arr.push( aux );
}


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Feb 2009 05:23 pm
Hermano! Muuuuuuuuuuuuuuuuuuchas gracias, Ahorita voy a probarlo, estuvimos dos semanas fuera de oficina y por fin hemos regresado a la civilización.
Antes de probar tu código quiero aprovechar para otra consulta. En la misma aplicación hicimos un banner que carga .swf con LoadMovie el cual se reproduce sin problemas con el Flash Player en Windows pero en los navegadores no se reproduce y no dá ninguna imágen. Ya que se reproducen otras animaciones estoy seguro que el plugin para el navegador está instalado. Me interesa también de que se pueda reproducir en plugin para Linux puesto que no reproduce el banner tampoco en los navegadores.

Muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy agraecido por tu ayuda y dedicación, favor nuevamente ayudame con este problema. Gracias! :)

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Feb 2009 07:24 pm
Si no se reproduce en ningun navegador, el problema puede ser con las rutas del banner, hay que revisarlas bien.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Feb 2009 11:34 pm
Gracias por responder tan pronto! Cómo podría ser un problema de ruta cuando desde el Flash Player lo abre? yo he especificado la ruta desde una variable llamada ruta que luego paso al laodMovie si recuerdo bien el código está así ruta=("/ImagenesBanner"+random[5]+".jpg");
loadMovie(ruta);
Creo mas o menos está así la ruta la quiero relativa y no absoluta, por eso la escribí así. Anteriormente tuve problemas con eso también de las rutas relativas y absolutas.
Donde cree está mi error? puedo mandarle el archivo por correo?

Gracias nuevamente! Muchas gracias..

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Feb 2009 05:40 am
Seria bueno que la postearas como la tienes en realidad, con todo y la funcion randome, ah, no llamas ese swf desde otro swf, verdad?

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 24 Feb 2009 01:51 pm
Hola! Gracias por responder siempre tan pronto.

Este es el código tal como lo tengo en la aplicación. Creé una capa llamada actions la cual es la primera y el código es:
ruta = "/Banner/banner" + (1 + random(6) + ".swf");
mcBanner.loadMovie(ruta);
El archivo es un swf que abro con el flash player, pero como dije antes con el navegador no lo reproduce a pesar que tengo instalado los plugin.

Gracias!

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Feb 2009 02:08 pm
Aprovechandome de la situación me gustaría hacer otra pregunta: ¿Cómo hace arreglos de comboBox? el código de las cajas de textos es perfecto aunque aún estoy tratando de posicionarlos correctamente. Quisiera hacer lo mismo pero con comboBox.

Gracias nuevamente!

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Feb 2009 04:15 pm
Opino que es hora de pagarle a un profesional, amigo :)

Por gustavogarzon

166 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 08:47 pm
Opino que sin el egoísmo de personas como usted, el mundo fuera aún mejor. Encapsule su conocimiento al factor $ y cuénteme dentro de menos de un año si le sirve de algo?
Los mejores sistemas se han desarrollado a través del libre conocimiento, pero no ha significado que no hay posibilidad de ganar $ de otra manera si es creativo.

Gracias!

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Feb 2009 09:06 pm
nhack:

Incialmente podemos ver que la funcion random, ya esta desfazada, lo que siginifica que los nuevos plugins no la reconocen, solucion, crear nuestra funcion rand:

Código ActionScript :

ruta = "/Banner/banner" + (1 + rand(6) + ".swf");
mcBanner.loadMovie(ruta);

function rand( limite:Number ):Number
{
   return Math.round( Math.randome() * limite );
}


Segundo, cuando lo pruebas en el navegador, el archivo html debe estar en la misma carpeta que el swf y en esa carpeta tambien otra capreta "Banner" con los swf a cargar.

Tercero, un arreglo puede estar creado de cualquier tipo de elemento, incluso combobox. Para crear una combobox con codigo se usa la funcion createClassObject, en la ayuda de flash explican como. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 26 Feb 2009 09:45 pm
Gracias po todas tus respuestas, sé que he abusado!
Todo va bien, puedo comprobar el texto dinámico con lo introducido por el niño en la caja de texto pero tengo dos problemitas:
1. Pude darle formato a los textos dinámicos var nuevoFormato:TextFormat = new TextFormat(); y luego darle las nuevas propiedades y asignárselas al aux con aux.setTextFormat(nuevoFormato); pero esto no fué posible con los inputBox ¿cómo lo resuelvo?
2. Al comprobar los campos dependiendo de la respuesta va a una escena de "Correcto" o a una escena de "Incorrecto", pero no he podido hacer que desaparezcan las cajas ni los textos dinámicos. Supongo que debo eliminar los elementos de la matriz pero lo hago con nombreMatriz.pop(aux) ó la función shift pero nada. Intenté con aux = this.removeTextField("caja"+i); todo dentro del mismo for o incluso hice una función pero nada.

Pudieras ayudarme nuevamente?

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Feb 2009 02:09 am
Bueno, si te refieres con inputBox a un TextField con type = "input", entonces tienes que fijar el TextFormat de este modo:

Código ActionScript :

caja_de_texto.setNewTextFormat(nuevoFormato);


para borrarlos, se recorre la matriz que contiene todos los campos de texto, asi:

Código ActionScript :

for( var i in nombreMatriz )
{
    nombreMatriz[i].removeTextField();//Se borra cada textField
}
nombreMatriz = [];//Se borra la matriz


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 02 Mar 2009 07:25 pm
Gracias por tus aportes nuevamente!

La función del formato lo realizó excelentemente! gracias.., pero la de borrar matriz no hace que desaparezcan los campos de textos dinámicos de la pantalla. Si borra los elementos de la matriz pero los campos aún están en la pantalla.
Si entiendo bien su código primero crea cada elemente aux = this.createTextField(...) y luego lo inserta en una matriz nombreMatriz.push(aux);
He borrado el contenido de nombreMatriz.removeTextField() pero no desaparece del escenario.
probé tratando de borrar un elemente específico como palabra_0.removeTextField() pero tampoco lo hace.
Por favor una ayuda más...

Por nhack

15 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 02 Mar 2009 11:46 pm
Hola, podrias colocar tu script completamente, para ver como es que esta estructurado todo y agregar la funcion borrar.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 03 Mar 2009 01:44 pm
Gracias por tu interés! Este es el código actualmente:

var datos:Array = new Array("abuelos","adiós","alegre","amable","animales","árbol","aseo","aves","baño","calle");
var EntradasTextos:Array = new Array();
var TextosDinamicos:Array = new Array();
var posXC:Number = 180;
var posYC:Number = 70;
var posXI:Number = 50;
var posYI:Number = 70;

for (var i:Number=0;i<datos.length;i++)
{
//Con este crea la variable que creará los dos tipos de cajas de textos
var aux1:TextField = this.createTextField("caja_"+i, this.getNextHighestDepth(),posXC,posYC,100,25);
aux1.multiline = false;
aux1.wordWrap = true;
aux1.text = "";
aux1.border = false;
aux1.type = "input";
aux1._width = 133;

//Crea el formato para los ImputBox
var formatoIB:TextFormat = new TextFormat();
formatoIB.font = "verdana";
formatoIB.size = 17;
formatoIB.align="left";
aux1.setNewTextFormat(formatoIB); //Se debe usar setNewTextFormat para los textos de tipo input y no sólo setTextFormat "INCREIBLE"

//Inserta en la matriz cajas la nueva caja creada.
EntradasTextos.push( aux1 ); //Inserta las cajas de textos en una matriz

posYC=posYC+42;

//Al objeto aux le
var aux2:TextField = this.createTextField("TextoDinamico_" + i, this.getNextHighestDepth(), posXI, posYI, 100, 25);
aux2.multiline = false;
aux2.wordWrap = true;
aux2.type = "dynamic"; //Este es el texto de tipo Dinámico
aux2.text = datos[i]; //Le asigna las palabras de la matriz datos al arreglo de textos dinamicos creados

var nuevoFormato:TextFormat = new TextFormat();
nuevoFormato.font = "verdana";
nuevoFormato.size = 17;
nuevoFormato.align = "left";
aux2.setTextFormat(nuevoFormato);


TextosDinamicos.push( aux2 ); //Inserta nuevo elemento al final de la matriz
posYI=posYI+43;

trace(TextoDinamico_0.text);
}

function LimpiarCajas()
{
for (var j in TextosDinamicos)
{
TextosDinamicos.removeTextField();
}
TextosDinamicos = [ ];
}

btnabuelos.onPress = function(){
if(EntradasTextos_0.text==TextosDinamicos_0.text)
{
gotoAndPlay("Escena 2",1);

}
else
{
gotoAndPlay("Escena 3",1);
}
}

lo último es un boton llamado btnabuelos lo cual compara el texto dinámico con lo escrito en la caja de texto si es correcto va a una escena de correcto y sino a otra de incorrecto, abrán 10 botones, uno por cada palabra.

Mil veces agradecido;

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Mar 2009 09:13 pm
Hola, tenias uno que otro error, ya lo cregi todo, asi quedo:

Código ActionScript :

var datos:Array = new Array("abuelos","adiós","alegre","amable","animales","árbol","aseo","aves","baño","calle");
var EntradasTextos:Array = new Array();
var TextosDinamicos:Array = new Array();
var posX:Number = 50;
var posY:Number = 70;
//Crea el formato para los ImputBox
var formatoIB:TextFormat = new TextFormat();
formatoIB.font = "verdana";
formatoIB.size = 17;
formatoIB.align="left";

for (var i:Number=0;i<datos.length;i++, posY += 42)
{
   //Con este crea la variable que creará los dos tipos de cajas de textos
   var aux1:TextField = this.createTextField("caja_"+i, this.getNextHighestDepth(), posX+133, posY, 133, 25);
   aux1.multiline = false;
   aux1.wordWrap = true;
   aux1.text = "";
   //aux1.border = true;
   aux1.type = "input";
   aux1.setNewTextFormat(formatoIB);
   //Al objeto aux le
   var aux2:TextField = this.createTextField("TextoDinamico_" + i, this.getNextHighestDepth(), posX, posY, 133, 25);
   //aux2.border = true;
   aux2.multiline = false;
   aux2.wordWrap = true;
   aux2.selectable = false;
   aux2.type = "dynamic"; //Este es el texto de tipo Dinámico
   aux2.text = datos[i]; //Le asigna las palabras de la matriz datos al arreglo de textos dinamicos creados
   aux2.setTextFormat(formatoIB);
   
   //Inserta en la matriz cajas la nueva caja creada.
   EntradasTextos.push( aux1 ); //Inserta las cajas de textos en una matriz
   TextosDinamicos.push( aux2 ); //Inserta nuevo elemento al final de la matriz
}

function EliminarCajas( Void ):Void
{
   for (var i in TextosDinamicos)
   {
      TextosDinamicos[i].removeTextField();
      EntradasTextos[i].removeTextField();
   }
   delete TextosDinamicos;
   delete EntradasTextos;
}
//Aqui ejecutamos EliminarCajas y podemos ver como todas las cajas son eliminadas
EliminarCajas();


La funcion "EliminarCajas" la ejecutas cuando lo necesites ¿ok? Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 04 Mar 2009 04:15 pm
Hola! Siempre agradecido, pero parece ser que tengo las 7 plagas informáticas.. jajaja.. el código está más simple que como lo tenía y más entendible, pero aún no me elimina los campos de textos de la escena, sino que se encarama en las otras escenas.
creo haber copiado el código idéntico:
var datos:Array = new Array("abuelos","adiós","alegre","amable","animales","árbol","aseo","aves","baño","calle");
var EntradasTextos:Array = new Array();
var TextosDinamicos:Array = new Array();
var posX:Number = 170;
var posY:Number = 70;

//Crea el formato para los imputBox
var formatoIB:TextFormat = new TextFormat();
formatoIB.font = "verdana";
formatoIB.size = 17;
formatoIB.align = "left";

var posXI:Number = 50;
//var posYI:Number = 70;

for (var i:Number=0;i<datos.length;i++, posY+=42)
{
//Con este crea la variable que creará los dos tipos de cajas de textos
var aux1:TextField = this.createTextField("caja_"+i, this.getNextHighestDepth(),posX,posY,133,25);
aux1.multiline = false;
aux1.wordWrap = true;
aux1.text = "";
aux1.border = true;
aux1.type = "input";
aux1.setNewTextFormat(formatoIB);

//Inserta en la matriz cajas la nueva caja creada


//Al objeto aux le
var aux2:TextField = this.createTextField("TextoDinamico_" + i, this.getNextHighestDepth(), posXI, posY, 133, 25);
aux2.multiline = false;
aux2.wordWrap = true;
aux2.type = "dynamic"; //Este es el texto de tipo Dinámico
aux2.text = datos[i]; //Le asigna las palabras de la matriz datos al arreglo de textos dinamicos creados
aux2.setTextFormat(formatoIB);

EntradasTextos.push( aux1 ); //Inserta las cajas de textos en una matriz
TextosDinamicos.push( aux2 ); //Inserta nuevo elemento al final de la matriz
}

function EliminarCajas()
{
for (var i in TextosDinamicos)
{
TextosDinamicos.removeTextField();
EntradasTextos.removeTextField();
}
delete TextosDinamicos;
delete EntradasTextos;
}

EliminarCajas();

Lo probé en ambos en CS3 y la versión 8 y nada. Disculpame. Si me permites te mando todo el fla al correo haber si hay conflictos por otro lado.

Por nhack

15 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Mar 2009 06:39 pm
Estoy seguro que funciona, lo probe y todo anda bien, sera cuestion de volver a revisarlo.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 04 Mar 2009 09:58 pm
Al parecer este codigo se ejecuta desde el _root, como tienes componentes de la version 2, la funcion getNextHigestDepth no funciona como se espera.

Cambiaremos el codigo por este otro, Suerte.

Código ActionScript :

var datos:Array = new Array("abuelos","adiós","alegre","amable","animales","árbol","aseo","aves","baño","calle");
var EntradasTextos:Array = new Array();
var TextosDinamicos:Array = new Array();
var posX:Number = 170;
var posY:Number = 70;

//Crea el formato para los imputBox
var formatoIB:TextFormat = new TextFormat();
formatoIB.font = "verdana";
formatoIB.size = 17;
formatoIB.align = "left";

var posXI:Number = 50;
//var posYI:Number = 70;

for (var i:Number=0;i<datos.length;i++, posY+=42)
{
   //Con este crea la variable que creará los dos tipos de cajas de textos
   var aux1:TextField = this.createTextField("caja_"+i, 999+i,posX,posY,133,25);
   aux1.multiline = false; 
   aux1.wordWrap = true; 
   aux1.text = ""; 
   aux1.border = true; 
   aux1.type = "input";
   aux1.setNewTextFormat(formatoIB);
   
   //Inserta en la matriz cajas la nueva caja creada
   
 
    //Al objeto aux le
   var aux2:TextField = this.createTextField("TextoDinamico_" + i, 899+i, posXI, posY, 133, 25); 
   aux2.multiline = false; 
   aux2.wordWrap = true; 
   aux2.type = "dynamic"; //Este es el texto de tipo Dinámico
   aux2.text = datos[i]; //Le asigna las palabras de la matriz datos al arreglo de textos dinamicos creados
   aux2.setTextFormat(formatoIB);
   
   EntradasTextos.push( aux1 ); //Inserta las cajas de textos en una matriz   
   TextosDinamicos.push( aux2 ); //Inserta nuevo elemento al final de la matriz   
}

function EliminarCajas()
{
   for (var i in TextosDinamicos)
   {
      TextosDinamicos[i].removeTextField();
      EntradasTextos[i].removeTextField();
   }   
   delete TextosDinamicos;
   delete EntradasTextos;
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 05 Mar 2009 03:04 pm
Eternamente Gracias!"

Por nhack

15 de clabLevel



Genero:Masculino  

firefox

 

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