Comunidad de diseño web y desarrollo en internet online

Repeater en flex 4, tema complicado

Citar            
MensajeEscrito el 29 Dic 2010 09:09 am
Buenas!!

Gracias de antemano por leer la cuestión

Un tema peliagudo el que os voy a presentar, al menos para mí me está costando horrores.

Estaba desarrollando una parrilla de programación de televisión muy similar a esta en flash builder, y para ello estaba usando dos reapeater anidados, con sus respectivos arrayCollections para generar el contenido.

Son muchos los canales a presentar (96) y cada uno con su correspondiente programación. Las filas son un canal, las columnas cada uno de los eventos (un partido de fútbol, una película, etc...)

El problema es que el rendimiento se ve muy muy afectado; con 2 canales tira bien, con 10 va regular, con 20 muy mal y con 30 ya tira abajo el navegador que se le presente. El consumo de recursos es exponencial en relación al número de canales que se muestran. Creo que el problema está en que necesito tener el atributo [bindable] para el objeto reapeter y al tener un bucle que carga todos a la vez, ese proceso de generación elementos resulta muy costoso...

¿Alguna solución?

¡¡¡Muchas gracias!!!

Por Riva

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Dic 2010 09:21 am
BuenAS:

El problema de los Repeaters es que crean instancias de TODOS los objetos que tenga el dataProvider (no sólo de los visuales) y consume bastantes recursos en comparación con las listas.

Si estás utilizando Flex 4, podrías optar por el componente spark

s:List

Es tremendamente configurable ya que le puedes asignar el layout que te interese, e incluso modificarlo en tiempo de ejecución. Y el rendimiento en comparación con el mx:Repeater es abismal.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Dic 2010 09:56 am
Que rapidez de respuesta!!

Muchas gracias, voy a probarlo !!!

Por Riva

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Dic 2010 12:26 pm
Hola!!!



Estuve probando s:list y la verdad que funciona mucho mejor, el problema está en que me los presenta en horizontal. mx:horizontalList sigue la misma filosofía? Se puede poner una s:List en horizontal con alguna propiedad? Yo busqué y en principio no encontré nada...

Pero mi principal problema es el anidamiento, ¿se puede hacer?

Os vuelvo a pegar la idea de lo que queremos conseguir:
http://www.elmundo.es/elmundo/television/guiatv/index.html

Muchas gracias por la respuesta!!

Por Riva

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Dic 2010 01:55 pm
BuenAS:

Puedes asignarle el layout que desees (incluso uno que programes tu; no sé, en forma circular ;) ):

Una lista horizontal sería algo así (en itemRenderer debes indicarle el componente que quieres que muestre en cada elemento de la lista):

Código Flex :

   <s:List id="horizontalList"
      dataProvider="{dataProvider}" itemRenderer="com.view.components.customRenderer">
      <s:layout>
         <s:HorizontalLayout />
      </s:layout>
   </s:List>

En Tour de Flex, en la sección Flex 4 tienes varios ejemplos de layouts con componentes spark, por si quieres echarle un vistazo. Los componentes spark, aunque son distinto de los mx y hay que ver su forma de trabajar, son bastante más intuitivos y flexibles.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Dic 2010 04:23 pm
fregggquisimo!! muy bueno, gracias !!

Por Riva

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Dic 2010 08:33 am
¡¡¡Funcionó!!! Gracias!! Comento un poco por si le sirve a alguien....



Lo tuve que combinar con un datagroup, con la propiedad useVirtualLayout a true y la lista dentro... Con esa propiedad, puedo controlar con el evento "added" cuando se agregan más items, para poder ir añadiendo poco a poco elementos al array sin que se atosiguen todos... Es como cuando el señor Burns tenía muchas enfermedades y querían pasar todas por la puerta, que no entraban :lol:

Ahora el problema está en el drag del datagroup, que se pira sin el <s:scroller> de rositas, es decir, no se sincroniza, el elemento vuela...

¡Muchas gracias!

Por Riva

6 de clabLevel



 

chrome

 

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