Comunidad de diseño web y desarrollo en internet online

ayuda para colorear textInputs

Citar            
MensajeEscrito el 17 Ene 2010 11:14 am
Hola a todos

Estoy intentando hacer una agenda, y para ello genero cada semana usando actionscript.
Para ello utilizo un montón de componentes TextInput (cada día tiene uno para cada hora, de lunes a sábado y de 15:30h a 21:00h, con un textInput cada media hora), y quiero colorear los días festivos.
Pero por algún motivo no va.

Tengo 2 botones, uno para colorear un día en concreto y otro para borrar todos los días, pero no hay forma de colorear nada.

La funcion de colorear colorea el lunes si le pasas un 0, martes un 1,..., hasta sábado que es un 6
(los domingos no los saco en la agenda).

Código ActionScript :

function pinta_festivo(diafest){
   var di:Array = new Array("LUN","MAR","MIE","JUE","VIE","SAB");
   var hor:Array= new Array("15","16","17","18","19","20","21");
   var min:Array= new Array("00","30");
   var componente;

   k=diafest;

   for(i=0;i<7;i++) //hora, desde las 15:30 hasta las 21h
   {
      //en punto solo si no son las 15h
      if(i!=0)
      { 
         componente=di[k]+hor[i]+"00"+"a"; 
         eval(componente).backgroundColor = "0xff9b9b";
         componente=di[k]+hor[i]+"00"+"b";
         eval(componente).backgroundColor = "0xff9b9b";         
      }
      //a y media solo si no son las 21h
      if(i!=6)
      { 
         componente=di[k]+hor[i]+"30"+"a";
         eval(componente).backgroundColor = "0xff9b9b";
         componente=di[k]+hor[i]+"30"+"b"; 
         eval(componente).backgroundColor = "0xff9b9b";         
      }   
   } //FIN de los for
}


//borra_festivos
//Esta funcion pone en blanco toda la tabla
//funcion que pinta de rosa los dias festivos, se le pasa un numero de 0 a 6 (lun-sab)
function borra_festivos(){
   var di:Array = new Array("LUN","MAR","MIE","JUE","VIE","SAB");
   var hor:Array= new Array("15","16","17","18","19","20","21");
   var min:Array= new Array("00","30");
   var componente;
trace('borrando estamos');
   for(k=0;k<6;k++)
   {
      for(i=0;i<7;i++) //hora, desde las 15:30 hasta las 21h
      {
         //en punto solo si no son las 15h
         if(i!=0)
         { 
            componente=di[k]+hor[i]+"00";
            eval(componente).backgroundColor = "0xffffff";         
         }
         //a y media solo si no son las 21h
         if(i!=6)
         { 
            componente=di[k]+hor[i]+"30";
            eval(componente).backgroundColor = "0xffffff";      
         }   
      }
   } //FIN de los for
}

dale.onRelease = function ()
{
   pinta_festivo(0);
}

don.onRelease = function ()
{
   borra_festivos();
}



Como ven, tengo unos bucles que generan los nombres de los TextInput:

LUN1530, LUN1600, LUN1630,...

Luego con eval(componente).backgroundColor pretendo asignarles un color, pero no va.
¿Es incorrecta esta forma de trabajar con "eval"?

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2010 09:56 pm
Si, no es correcto ya usar eval. Usa la siguiente sintatis:

Código ActionScript :

clip["clip_interno"].propiedad


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:00 pm
Gracias Hernan, no conocía clip.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:23 pm
Estoooo

¿clip es el nombre del clip o es una función de flash? No encuentro que exista el flash, de hecho en el código no se colorea en azul, pero tampoco da error. No consigo hacerlo funcionar. Help please :)

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:27 pm
Clip es una referencia a un nombre de instancias de un MovieClip

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:31 pm
Supongamos que tenemos una instancia de un TextInput de nombre LUN1530.

Este código debería ir, ¿no?:

Código :

componente="LUN"+"15"+"30"; 
clip[componente].backgroundColor = "0xff9b9b";


Pero no va. Si pongo directamente

Código :

LUN1530.backgroundColor = "0xff9b9b";

funciona obviamente, pero claro, yo necesito generar dinámicamente el nombre de los textinputs para colorear los que me interesen. Creo que no he entendido lo que has querido decir.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:41 pm
Vale, ya entiendo. Jeje.

Esto funciona:

Código :

componente="LUN"+"15"+"30"; 
this[componente].backgroundColor = "0xff9b9b";


Sin embargo si lo pongo dentro de una función no. He cambiado this por root y parent, sin éxito.
Supongo que tiene que ver con el ámbito, pero no se como referirme a un componente del escenario desde dentro de una función si no es con root.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ene 2010 06:03 am
Asumiendo que tengas el path de componente bien, si quieres usar root debe ser:

Código ActionScript :

componente="LUN"+"15"+"30"; 
_root[componente].backgroundColor = "0xff9b9b";


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 18 Ene 2010 09:36 am
Pues no se, el componente simplemente está en el escenario, es un TextInput que he arrastrado de la librería de flash al escenario y le he puesto un nombre. Tampoco va con root, no lo entiendo :S

Eso sí, si pongo ese code fuera de la funcion, sí que va:

Código ActionScript :

function pinta_festivo(){
componente="LUN"+"15"+"30";  
_root[componente].backgroundColor = "0xff9b9b";
}


boton.onRelease = function ()
{
   pinta_festivo();
}

//si quito los comentarios si que colorea el textinput
//componente="LUN"+"15"+"30";  
//_root[componente].backgroundColor = "0xff9b9b";




no lo entiendo, ¿por qué no va? :cry:

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ene 2010 02:00 pm
¿Tienes un componente en el escenario llamado LUN1530?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 18 Ene 2010 11:03 pm
Hola Hernan, perdona por no contestar antes pero he tenido mucho trabajo.
Efectivamente, el componente se llama asi.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2010 03:38 am
Si pones en tu escenario:

Código ActionScript :

_root.LUN1530.backgroundColor = "0xff9b9b"; 


¿Funciona?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 19 Ene 2010 09:47 am
Funciona

Código ActionScript :

_root.LUN1530.backgroundColor = "0xff9b9b"; 


también sin el root

Código ActionScript :

LUN1530.backgroundColor = "0xff9b9b"; 


también si ponemos esto (descomentamos las líneas de antes)

Código ActionScript :

componente="LUN"+"15"+"30"; 
this[componente].backgroundColor = "0xff9b9b";



Es curioso porque he estado haciendo pruebas y si pongo una llamada a la funcion directamente (sin pulsar un botón), funciona perfectamente.
Pero si tengo que pulsar el boton para activar la funcion, no funciona. Juraría que todo esto es correcto:

Código ActionScript :

function pinta_festivo(diafest){
componente="LUN"+"15"+"30"; 
_root[componente].backgroundColor = "0xff9b9b";
}

dale.onRelease = function ()
{
   pinta_festivo(0);
}


"dale" es el nombre del botón.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2010 10:55 pm
He añadido el poner un texto en el TextInput y eso sí que va, pero sigue sin colorear el TextInput desde dentro de una función.

Código :

pinta_festivo = function (diafest) {
componente="LUN"+"15"+"30"; 
_root[componente].backgroundColor = "0xff9b9b";
_root[componente].text = "textooooo";
}

dale.onRelease = function ()
{
   pinta_festivo(0);
}


Así que "textooooo" sale escrito, pero el color nada de nada :cry:

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2010 11:08 pm
Vaya por dios. Ya está arreglado, el tema es que es un componente y no se puede hace backgroundColor directamente ( bueno, poder se puede porque si lo pongo FUERA de la función funciona, pero supongo que no es lo recomendable).
Este código sí que va:

Código ActionScript :

_root[componente].setStyle("backgroundColor", 0xff9b9b);


Sigo sin comprender porqué fuera de la función no hace falta usar el setStyle.

Hernán, de nuevo gracias por tu ayuda y tú paciencia. :D

Por daniel69

78 de clabLevel



 

firefox

 

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