miércoles, 25 de noviembre de 2009

ActionScript 3: Sumar dos String

Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.Cuando ponemos contenido dentro de una variable del tipo XML, éstos serán siempre cadenas de texto. Por Ejemplo:
Si queremos realizar alguna operació con los valores del xml tenemos al menos dos opciones:

1) Definir nuevas variables del tipo Number y cargar el contenido del xml
var numero1:Number = operadoras.children()[0].attribute("historico"); //En el primer children (0) con el atributo "historico";
var numero2:Number = operadoras.children()[1].attribute("historico"); //En el segundo children (1) con el atributo "historico"
2) Realizar la nueva operación pero "avisandole" a actionscript que debe tratar ese contenido como si fuera numérico:
suma = Number(operadoras.children()[1].attribute("historico")) + Number(operadoras.children()[0].attribute("historico"));//Toma los datos del xml pero previamente se indica que lo trate como number: Number("el string que sea"). trace(suma);

Personalmente me gusta la segunda forma. De más esta decir que en ambos casos, si el contenido del xml no es un número nos dará el famoso NaN (Not a number).

Si querés el archivo .fla de este ejemplo dejame un post con tu email.

martes, 24 de noviembre de 2009

ActionScript 3: Clase para crear un ComboBox con datos de un XML

Pues eso: Si tenés un combo box en tu biblioteca de flash y un .xml donde están sus datos puedes cargarlos dinámicamente utilizando una pequeña clase en actionscript.

Entonces:
1) Generá un archivo .fla que se llame "Ejemplo_combo_xml.fla".
1a) Poné en la biblioteca un ComboBox
1b) Definí la clase del documento como "Ejemplo_combo_xml" (en propiedades: Clase del documento: nombre de la clase)

2) Armá un archivo .xml llamado "Ejemplo_combo_xml.xml" que contiene la información para el combo de éste modo:

3) Generas un archivo llamado "Ejemplo_combo_xml.as" y acá empieza lo bueno. Este es el código que debemos escribir para crear la clase:

package{
import flash.display.*; //importo todos los displays
import flash.events.*; //eventos de movie
import flash.net.*; // clases para cargar xml
import fl.controls.ComboBox; //el combo esta previamente cargado en la biblioteca
//CLASE
public class Ejemplo_combo_xml extends MovieClip{
//CONSTRUCTOR - No me gusta poner cosas allí. Si es necesario iran variables.
public function Ejemplo_combo_xml(){
miNuevoCombo(); //llamo a la funcion mi combo
}
//FUNCION QUE CREA LOS COMBOS
function miNuevoCombo():void{
var miCombo:ComboBox = new ComboBox();
miCombo.width = 150; //ancho que quiero que tenga el combo
addChild(miCombo);
llenarCombo(miCombo);//Llamo a la funcion que va a cargar los datos en los combos
//FUNCION PARA LEER EL COMBOBOX CUANDO HAGA CLICK
miCombo.addEventListener(Event.CHANGE, cambiarCombo);
function cambiarCombo(evt:Event){
if(miCombo.value!="seleccionar"){
trace(miCombo.value);
}
}
}
//FUNCION PARA LLENAR LOS COMBOS CON EL XML DE PAIS
function llenarCombo(miCombo):void{ //RE
miCombo.addItem({label:"Seleccionar",data:"seleccionar"});
var generalXML:XML; //creo una variable tipo XML que contendrá el contenido del archivo .xml
var cargador:URLLoader=new URLLoader();//cargador del xml funciona/no funciona
cargador.addEventListener(Event.COMPLETE, cargarXML); // si todo bien con el XML llamo a la funcion que carga los datos en la variable XML
cargador.addEventListener(IOErrorEvent.IO_ERROR, errorCargarXML); //si todo mal con el XML te lo aviso
cargador.load(new URLRequest("Ejemplo_combo_xml.xml"));
//FUNCION QUE CARGA LOS DATOS DEL ARCHIVO .XML EN LA VARIABLE XML
function cargarXML(evt:Event):void {
generalXML=new XML(evt.target.data);
cargador.removeEventListener(Event.COMPLETE, cargarXML);
cargador.removeEventListener(IOErrorEvent.IO_ERROR, errorCargarXML);

for(var i:int=0;i<generalxml.children().length();i++){
miCombo.addItem( { label:generalXML.children()[i].attribute("nombre"), data:generalXML.children()[i].attribute("valor") } );
}
}
//FUNCION QUE AVISA SI HUBO UN PROBLEMA CON EL XML
function errorCargarXML(evt:IOErrorEvent):void {
trace("Error en la carga");
}
}
}
}

Si quieres el archivo fuente de este ejemplo dejame un comentario con tu mail y te lo mando.
Saludos!

jueves, 19 de noviembre de 2009

Create Your Own Wallpapers Application


x3 studios presenta esta aplicación flash premiada por thefwa (the Favourite Website Awords) para generar wallpapers de forma dinámica.

Esta aplicación flash permite a cualquier usuario crear fondos de pantalla personalizados sobre la marcha, con elementos de fondo, gráficos, texto y las opciones de fuente.

Un buen juego de diseño, programación y buenos resultados personalizados.

lunes, 9 de noviembre de 2009

ActionScript 3: Convertir el punto decimal(.) en coma(,)

Cuando programamos, los números decimales esta siempre separados por un punto(.). Sin embargo los hispano parlantes nos vemos a veces obligados a mostrar los números decimales separados por una (,) ya que el punto, en español, es un separador de miles.

En actionscript no podemos utilizar números decimales separados por comas ya que nos da error.

Por eso es que generalmente realizo los calculos con números separados por puntos, pero los muestro con coma utilizando la siguiente acción sencilla: Separo los valores en un array y los vuelvo a juntar en una nueva variable:

1) Supongamos que tenemos la variable A que tiene un valor de 2.5

var A:Number = "2.5";

2) creo un array llamado decimal que va a contener todos los elementos de la variable A utilizando aprovechando el punto decimal como separador de elementos. De este modo, en el array decimal quedaran en la posición [0] el valor 2 y en la posición [1] el valor 5

var decimal:Array = String(A).split(".");

Ya puedo puner los valores en una nueva variable string con coma como separador decimal

var decimalComa:String = decimal[0] + "," + decimal[1];

Lo pruebo

trace(decimalComa);

y nos devolverá el número con coma: 2,5.

Cuando quiero asegurarme si el número de la variable es decimal o es un entero, para no poner una coma vacía hago un if que se asegure de que hay algo en la segunda posicion del array:

if (!decimal[1]) {
var decimalComa:String = decimal[0];
}else{
var decimalComa:String = decimal[0] + "," + decimal[1];
}

Esto mismo se puede hacer para convertir comas en puntos y funciona tanto para actionscript 3 como actionscript 2.

miércoles, 4 de noviembre de 2009

Portfolio: André Holzmeister - Ilustración 3d

Bonito portfolio el de este diseñador de brasil , que trabaja en la agencia CuboCC de ese país donde ha dado vida 3d a personajes para campañas de axe. Un variado catálogo de personajes y escenarios creados por éste caballero.

He aquí su portfolio


Levitated - Jugando con la programación

A través de a-pixel me entero de este sitio interesante y divertido.
Levitated es una publicación dedicada a la programación recreativa. Es un punto de encuentro para el diseño y la programación. Flash es el nexo para esta combinación.

En Levitated escriben algunos genios del flash y la programación. Además promocionan una gran variedad de eventos y otras publicaciones del grupo.

Si te gustan los fractales, la programación en ActionScript de flash y algo de 3d no podes dejar de visitar la galería de archivos open sourse. Donde podrás ver una interesante cantidad y variedad de programitas en flash de diseños dinámicos interesantes. Te podes descargar los .fla para estudiarlos y jugar un rato.

miércoles, 28 de octubre de 2009

Speckyboy - Design Magazine

Magazine de diseño gráfico y web, que cuenta con un monton de recursos, tutoriales, portfolios y artículos del mundo del siseño.

Abarca varias áreas del diseño web y gráfico. Desde Ajax hasta fuentes pasando por tutoriales e información sobre herramientas y tendencias. Toda la información es muy útil y tratada de manera profesional.

En cada sección recopila mucha información y de la buena relacionada al mundo del diseño, generalmente brindando recursos gratuitos e información.

Si prestas atención a todas sus secciones encontrarás una gran fuente de inspiración.
El portal que comparte sus ingresos