En este Tip voy a explicar un sistema para poder controlar la funcionalidad de un componente usado como itemRenderer en cualquier componente de tipo lista desde una clase de ActionScript 3.
Supongamos que en nuestra aplicación Flex tenemos un compomente TileList al que le hemos asignado otro componente como itemRenderer:
Código :
<mx:TileList id="myTileList"> <mx:itemRenderer> <mx:Component> <mx:myItemRenderer/> </mx:Component> </mx:itemRenderer> </mx:TileList>
Este itemRenderer será otro archivo MXML al que queremos asignarle una clase AS3 para poder manejarlo, para ello le añadiremos un tag <mx:Script> y definiremos la clase:
Código :
<mx:Script> <![CDATA[ import com.proyecto.MyItemRendererClass; private var _this:MyItemRendererClass = new MyItemRendererClass(this); ]]> </mx:Script>
El único detalle a tener en cuenta es que la clase reciba correctamente el contenido del objeto "data" del dataProvider. Eso se lo tenemos que pasar una vez el itemRenderer esté creado, de manera que en el evento creationComplete del componente haremos un setter a la clase:
Código :
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"creationComplete="_this.data = data">
Con lo que la clase para controlar el itemRenderer comenzaría siendo así:
Código :
package com.proyecto { public class MyItemRendererClass { private var _main:Object; private var _data:Object; //------------------------------------------------------------------------ public function MyItemRendererClass(m:Object) { _main = m; } public function set data(d:Object):void { _data = d; init(); } //------------------------------------------------------------------------ public function init():void { /* etc.. */ } //------------------------------------------------------------------------ } }
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Otaku RzO el 04 de Marzo de 2009
Pero aun me queda la duda de como manejar los eventos dentro de este tipo de componentes dentro de Listas.
Por Zguillez el 04 de Marzo de 2009
Otaku RzO :
Por Otaku RzO el 04 de Marzo de 2009
Por ejemplo si a uno de estos componentes le pongo un botón y al darle click debe disparar el evento "ITEMRENDERCLICK" y debería cogerlo escucharlo en mi Aplicación donde tengo la Lista, con un addEventListener quizás. No tengo idea de como hacerlo con componentes repetitivos dentro de una Lista.
Por Zguillez el 04 de Marzo de 2009
Otaku RzO-blog :
hombre, eso lo haces fácil con una clase EventManager que extienda de EventDispatcher que sea singleton y que tengas instancia tanto en la clase de la aplicación y en la clase del itemRender... desde el itemRenderer ejecutas metodos que disparen eventos del manager que son detectados por la aplicación pasandole los parámetros que quieras.. y listo
Por Otaku RzO el 04 de Marzo de 2009
Por stock el 04 de Marzo de 2009
Por eldervaz el 05 de Marzo de 2009
Por M@U el 09 de Marzo de 2009