Translate

Mostrando entradas con la etiqueta Action Script 3. Mostrar todas las entradas
Mostrando entradas con la etiqueta Action Script 3. Mostrar todas las entradas

lunes, 18 de marzo de 2013

Hilos en AS3: Simulación de hilos en action script 3

Para la realización de procesado de datos en cliente que es muy pesado, lo mejor es utilizar hilos, pero Action Script 3 no tiene es capacidad.

Para ello existe una librería que se encarga de simularlos, así que aquí os la dejo para futuros usos, por ahora no he podido hacer ningún ejemplo.

ENDER_LIBhttp://code.google.com/p/ender-lib/

martes, 22 de enero de 2013

Generación de IDs únicos en ActionsScript y en Java

Para la generación de IDS únicos tanto en Java tenemos dos librerías incluidas dentro de las SDK de Java y de Flex que nos ayudan mucho a realizar esta tarea.

Java:

String uuid =  java.util.UUID.randomUUID().toString();

ActionScript:

var uuid:String  = UIDUtil.createUID();


miércoles, 26 de septiembre de 2012

Flex: operación trim() para los string

La operación trim() no aparece en la propia clase de String igual que en java, aquí tenemos que recurrir a la ayuda de StringUtil para conseguir esa función.

Es una clase estática con multitud de operacione, pero concretamente la que nos interesa sirve para eliminar los espacios en blanco del comienzo y final de un string.


var token:String = "  antuansoft   ";
StringUtil.trim(token));
//Salida: "antuansoft"


miércoles, 27 de junio de 2012

Flex - itemCreationPolicy: La política de creación de un objeto es útil

Pre-requisitos: Conocimientos básicos de Flex.

Esta particularidad de Flex es bastante útil desde mi punto de vista por dos puntos principalmente.

  • Para ahorrar memoria.
  • Para mejorar el comportamiento al a vista del usuario.
Todo objecto que se añade en flex tiene una  itemCreationPolicy que puede ser de dos tipos

  • Deferred: Que hace que el objeto se cree cuando es instaciado. Valor por defecto
  • Inmediate: Que hace que el objeto se cree al inciar la aplicación.

El  comportamiento deferred es el que está puesto por defecto ya que si fuera al contrario y todos los componentes cargaran en nuestra aplicación esta podría consumir mucha memoria y perder rendimiento.

Los que tienen el valor deferred se crean cuando el objeto es instanciado es decir cuando aparece en pantalla y el objeto tes visible.

Pero en ciertos casos necesitamos que este objeto aunque no se vea en pantalla necesitamos que se cree para que por ejemplo se carguen en él unos datos recuperados de base de datos o que al cargase se ejecute algún evento que necesitemos que ocurra.

En estos casos lo mejor es poner el campo  itemCreationPolicy="immediate" para que aunque no sea visible se comporte como si lo fuera y se cree al cargase la pantalla.

Todos los componentes de flex tienen esta propiedad itemCreationPolicy y puede aplicase cuando se crea necesario:


 <s:Button id="newButtonImmediate" 
            includeIn="Immediate" 
            itemCreationPolicy="immediate"/>



Referencias:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf63611-7ffa.html

jueves, 17 de mayo de 2012

Flex 4: Acceder al contenedor padre de un Itemrenderer

Calling parent container from ItemRendere.

Pre-requisitos: Conocimientos básicos de Flex 4 (funcionamiento de un Itemrenderer) y Action Script 3.

Una de las mejores características de flex es que te permite crear listas de objetos, con la particularidad de que podemos crear diseños e interfaces muy visuales de estos objetos gracias a los Itemrederers. Por ejemplo, una lista botones donde cada botón tiene un diseño similar con funcionalidad similar.

Pero puede que tengamos la necesidad de acceder, no sólo a la lista que contiene al itemrenderer sino también a la vista que contiene a esta lista para acceder a alguno de sus objetos declarados o funciones.

La parte negativa de esto es que el Itemrenderer que lo utilice quedará totalmente acoplado a la vista padre a la que hacemos referencia y no podrá ser un elemento independiente y reutilizable por otras listas.

El propio itemrenderer ya nos trae distintas propiedades rellenas con la información de los datos con lo que hemos rellenado la lista.


data: Contiene la información del elemento de la lista al que representa el itemrenderer.
parentDocument: hace referencia a algún objetos padre que contiene al itemrederer.

También se puede sobre-escribir funciones  como set data() que se ejecutará para de asignar el valor de uno de los elementos de la lista al itemrenderer.

Para acceder a la vista padre lo que debemos utilizar es parentDocument.parentDocument que nos devolverá un objeto del tipo de contiene a lista.


El ejemplo que os pongo a continuación es una mxml principal(MainApp.mxml) con una lista y el itemrender utilizado (ServiceIR.mxml). Se supone que ambos están en el mismo paquete de la aplicación.


MainApp.mxml

<s:Application
................

<s:Group width="100%">
                              <s:HGroup left="40" top="40">

                                        <s:List width="100%" dataProvider="{items}"
                                                            itemRenderer="ServicesIR"
                                                            contentBackgroundColor="#E6E7E8" borderVisible="false">

                                                  <s:layout>
                                                            <s:HorizontalLayout columnWidth="50" gap="5"/>
                                                  </s:layout>
                                        </s:List>

.....

</Application>


El objeto items del data provider podría ser un arrayCollections de Strings por ejemplo.

ServicesIR.mxml


<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                                        xmlns:s="library://ns.adobe.com/flex/spark"
                                        xmlns:mx="library://ns.adobe.com/flex/mx"
                                        autoDrawBackground="true">
...

<fx:Script>
                    <![CDATA[

              override public function set data(value:Object):void
              {
              var parent:MainApp =  parentDocument.parentDocument; //Instance of MainApp.mxml
                    ............................
              }

]]>
</fx:Script>


     ..............
  }

<s:ToggleButton id="tab"  label="{data}" horizontalCenter="0" verticalCenter="0"/>


</s:ItemRenderer>


Utilizo la función set data para asignar para recuperar al objeto padre y acceder a lo que necesite para modificar los datos como sea necesario.






miércoles, 16 de mayo de 2012

Action Script 3: Sentencias condicionales con el operador ternario.

Conditional sentencies with ternary operator Ya sé que es un inmensa tontería y que en casi todos los lenguajes es muy similar pero no puedo evitar liarme siempre con este operador.

Así que lo pongo en el blog y no me lio más.


Código normal:
var color:String;
var verdura:String = 'tomate';
if (verdura == 'tomate') {
   color= 'rojo';
} else {
   color= '????';
}
trace(color); //muestra 'rojo'
Código con el operador ternario
var color:String;
var verdura:String = 'tomate';
color = verdura == 'tomate' ? 'rojo' : '????'
trace(color) //muestra 'rojo'