Comunidad de diseño web y desarrollo en internet online

Creando TextFields dinámicamente con Numeric Stepper

Citar            
MensajeEscrito el 21 Dic 2008 03:11 pm
Tengo que hacer una ficha de inscripción donde se colocarán los nombres de los participantes escojiendo previamente la cantidad de los mismos con un Numeric Stepper.
Dicho de otra forma, por default siempre habrá un campo estático en esa página junto al Numeric Stepper, si el usuário elije la opción 5 se adicionarán al palco 4 campos (inputs). Toda esta parte está funcionando bien, el problema es cuando en lugar de aumentar los campos quiero disminuirlos.

Código ActionScript :

// NumericStepper nstQuantidade;

// Este es el campo estático que va a aparecer independiente del número escojido en el Numeric Stepper

var container:Sprite = new Sprite();
var campo1:TextField = new TextField();
var aCampos:Array = new Array();
var iniY:Number = 50;
var step:Number = 40;
var memoria:int = 0;

container.x = 200;
container.y = 100;

campo1.width = 250;
campo1.height = 25;

campo1.type = TextFieldType.INPUT;
campo1.border = true;

this.addChild ( container );
container.addChild( campo1 );

// Campos dinámicos

nstQuantidade.minimum = 1;

nstQuantidade.addEventListener( Event.CHANGE, nstQuantidade_CHANGE );

function nstQuantidade_CHANGE ( evento:Event ):void
{
   for ( var i:int = 0; i<nstQuantidade.value - 1; i++ )
   {
      aCampos[i] = new TextField();
      if ( i == 0 )
      {
         aCampos[i].y = iniY;
      }
      else
      {
         aCampos[i].y = aCampos[i-1].y + step;
      }
      aCampos[i].type = TextFieldType.INPUT;
      aCampos[i].width = 80;
      aCampos[i].height = 20;
      aCampos[i].border = true;
      if ( nstQuantidade.value - memoria> 0 )
      {
         trace ( "aumentando" );
         container.addChild(aCampos[i]);
      }
      else
      {
         trace ( "disminuyendo" );
      }
   }
   memoria = nstQuantidade.value;
}


Será que alguien sabe como ir eliminando os campos uno a uno con el Numeric Stepper?

Desde ya muchas gracias.

Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Dic 2008 08:44 pm
Bien, aqui cometí un gran error conceptual. Tenía un ejemplo de carga dinámica de loaders y me baseé en ella erroneamente para resolver este problema. En el caso de los loaders para cargar imágenes externas, se crea un array y se los va colocando adentro. Para recorrer el array es que se hace uso del for. No existe en este caso intervención del usuário.
En este problema no solo que no es necesário el uso del for como que es erróneo hacerlo. Porque toda vez que un clique era hecho en el Numeric Stepper se recorria todo el array colocando childrens desnecesários en el aplicativo y por esto la imposibilidad posterior de eliminarlos.

A continuación la solución trabajando con el operador i++ e i--

Código ActionScript :

// NumericStepper nstQuantidade;

// Este es el campo estático que va a aparecer independiente del número escojido en el Numeric Stepper

var container:Sprite = new Sprite();
var campo1:TextField = new TextField();
var aCampos:Array = new Array();
var iniY:Number = 50;
var step:Number = 40;
var memoria:int = 0;

container.x = 200;
container.y = 100;

campo1.width = 250;
campo1.height = 25;

campo1.type = TextFieldType.INPUT;
campo1.border = true;

this.addChild ( container );
container.addChild( campo1 );

var i:int = 0;

// Campos dinámicos

nstQuantidade.minimum = 1;

nstQuantidade.addEventListener( Event.CHANGE, nstQuantidade_CHANGE );

function nstQuantidade_CHANGE ( evento:Event ):void
{
   aCampos[i] = new TextField();
   if ( i == 0 )
   {
      aCampos[i].y = iniY;
   }
   else
   {
      aCampos[i].y = aCampos[i-1].y + step;
   }
   aCampos[i].type = TextFieldType.INPUT;
   aCampos[i].width = 80;
   aCampos[i].height = 20;
   aCampos[i].border = true;
   if ( nstQuantidade.value - memoria> 0 )
   {
      container.addChild(aCampos[i]);
      i++;
   }
   else
   {
      i--;
      container.removeChild(aCampos[i]);
   }
   memoria = nstQuantidade.value;
}

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

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