Comunidad de diseño web y desarrollo en internet online

Estilos en elementos de componente List para un menu. AS3

Citar            
MensajeEscrito el 21 Sep 2009 01:20 am
Hola a todos.
Es la primera vez que participo en este foro, y aunque es para solicitar ayuda, os prometo que tan pronto pueda lo haré para prestarla!

Mi problema: estoy montando un menú vertical cuyas opciones se cargan desde un xml en un componente List. Mi intención es hacer un menú en dos niveles: pulsas en una categoría y la lista se refresca incluyendo las subcategorías que cueltag de esta (que también vienen con el xml). Hasta aquí todo bien. Mi problema viene cuando no encuentro la manera de definir estilos diferentes para los elementos del primer nivel del menu y los del nivel secundario (todos ellos en el mismo List).
Tras mucho buscar y tratar de entender el funcionamiento del CellRenderer, he llegado a la conclusión de que todos los elementos de la lista deben presentar el mismo estilo... lo que echaría por tierra mi intención de usar este componente para implementar el menu...

en fin. tal vez podáis ayudarme, o indicarme alguna otra técnica para crear un menú con estas características (lo estoy intentando también insertando botones dinámicamente en un componente ScrollPane... pero tengo problemas con el scroll vertical, que aparece sin necesidad).

Muchas gracias!

Javi

Por javigzz

3 de clabLevel



Genero:Masculino  

PHP Freelance Madrid

firefox
Citar            
MensajeEscrito el 21 Sep 2009 11:15 am
Si utilizas un componente personalizado como CellRenderer, puedes hacer que cambie su estilo según la data que reciba (es decir el estilo del componente, no el de la lista)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Sep 2009 04:18 pm
Muchas gracias por la respuesta Jorge, me ha puesto sobre la pista .. aunque no lo tengo todavía. Pero casi.

He creado una nueva clase que extiende cellrenderer y sobreescrito su método protegido drawLayout(), para que asigne uno u otro formato de texto según un parámetro "tipo" que defino para cada elemento de la lista. Encontré un par de ejemplos similares por ahí.

Casi funciona, salvo por el molesto hecho de que los estilos que se asiganan a cada celda (unos textos azules y otros rojos) no se ven hasta que paso el ratón por encima de las mismas. Es decir, nada más ejecutar el programa se muestran los estilos por defecto, que cambian al color adecuado cuando paso el ratón. Entendía que el drawLayout se llamaría desde la primera vez que se dibujara la lista...

He probado a poner el if de los formatos de texto en el constructor, pero da error al no encontrar "data". Tampoco llamando a super.drawLayout(); desde el constructor.

A continuación el código de la clase CellRenderer personalizada:

Código ActionScript :

   
public class micell extends CellRenderer implements ICellRenderer {
         var formato2:TextFormat = new TextFormat();
         var formato3:TextFormat = new TextFormat();
      public function micell():void {
         formato2.size = 18;
         formato2.color = 0xFF0000;
         formato3.size = 10;
         formato3.color = 0x0000FF;         
         super();
      }
      override protected function drawLayout():void {
         if (data.tipo =="a"){
            super.setStyle("textFormat", formato2);
         }
         else {
            super.setStyle("textFormat", formato3);
            }
         super.drawLayout();
      }
}


El código con el que incluyo la lista:

Código ActionScript :

var lista:List = new List();
lista.addItem( {label:"texto1", data:1, tipo:"a" } );
lista.addItem( {label:"texto2", data:2 , tipo:"b" } );
lista.setStyle("cellRenderer",micell);
addChild(lista);


¿Alguna idea sobre cómo hacer que se vean los formatos correctos desde el primer momento?

Muchas gracias de nuevo.

Javi.

Por javigzz

3 de clabLevel



Genero:Masculino  

PHP Freelance Madrid

firefox
Citar            
MensajeEscrito el 21 Sep 2009 04:25 pm
¿Estás en Flash o en Flex?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Sep 2009 04:56 pm
En Flash CS3. Apenas tengo unas vagas nociones de Flex, aunque espero ponerme con ello en breve.

Por javigzz

3 de clabLevel



Genero:Masculino  

PHP Freelance Madrid

firefox
Citar            
MensajeEscrito el 21 Sep 2009 07:56 pm
Creo que la función que asigna el valor es setValue, no he hecho cellRenderer en Flash y desconozco el ciclo de vida, pero seguramente el evento es otro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Sep 2009 09:59 am
Muchas gracias Jorge. Trataré de encontrar la solución con tus indicaciones, aunque por el momento voy a pasar a otra cosa porque llevo unos días atrancado con esto... Cuando lo solucione lo comento por aquí.

Saludos!

Por javigzz

3 de clabLevel



Genero:Masculino  

PHP Freelance Madrid

firefox
Citar            
MensajeEscrito el 21 Abr 2010 05:05 pm
En tu clase "micell", prueba de definir los estilos cuando se añade al stage.

Por Top30

0 de clabLevel



 

elche

chrome

 

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