jueves, 16 de junio de 2011

Creando un programa

Como hemos visto anteriormente, los programas de ActionScript están hechos a partir de clases, que son los planos de las partes (objetos) Inter-relacionadas de un programa.

Típicamente, el desarrollo de un nuevo programa de ActionScript comienza en la fase de diseño, durante la cual la funcionalidad del programa está dividida en un juego lógico de clases. Cada clase tiene un nombre, una serie de características y un papel que jugar en el programa completo.

Una clase en particular es designada como la clase principal. La clase principal proporciona el punto de inicio, o punto de entrada de la aplicación. Para iniciar un nuevo programa el entorno Flash crea automáticamente una instancia de la clase principal del programa.

En este curso crearemos un discreto juego de rol al estilo Zelda, ambientado en la época prehispánica americana y con una historia de aventuras. Para nuestro juego al que bautizaremos como El cuarto sol nombraremos a la clase principal CuartoSol.

Como primer paso para crear nuestro programa vamos a crear una carpeta en nuestro sistema de archivos llamada cuartosol. Dentro de esta carpeta vamos a crear una subcarpeta llamada src en la que almacenaremos todos nuestros archivos .as (osea, todos los archivos fuente).

El código de cada clase principal del programa debe colocarse en un archivo de texto llamado como la clase, incluyendo además la extensión .as. Por lo tanto vamos a crear un archivo vacío llamado CuartoSol.as tomando en cuenta las mayúsculas en el nombre, pues así corresponderá con el nombre de nuestra clase principal. Este archivo lo colocaremos en la ruta cuartosol/src. Esta es una representación de nuestra estructura de archivos:



Con CuartoSol.as creado podemos ya comenzar a escribir la clase CuartoSol. En este punto pudiéramos enfrentarnos a un problema potencial: si hubiésemos escogido un nombre de clase principal que fuese igual a alguna clase ya existente en ActionScript entonces nuestra clase no podría ser creada, y nuestro programa no seria capas de iniciar.

Para evitar esta clase de conflictos de nombres en nuestro programa, haremos uso de los paquetes. El tema de los paquetes lo iremos cubriendo mas adelante.

Aun hay mucho por hacer y por aprender antes de que seamos capaces de compilar nuestro programa. Recuerda siempre este momento en que tu programa es solo dos carpetas y un archivo vacío. Esto te dará que pensar cuando te encuentres compilando cientos de archivos con miles de líneas cada uno.

lunes, 4 de abril de 2011

Clases y Objetos

Imaginen que están construyendo un avión totalmente nuevo. ¿Que proceso debieran seguir?. Antes de dirigirse a la ferretería a comprar tornillos deberían de hacer algunas cosas extras ¿o no?. Primero hay que dibujar un plano del nuevo avión, y uno por cada pieza del avión (ruedas, alas, motores, etc.). Cada plano debe de describir conceptualmente cada parte y corresponder a una parte actual en la encarnación física de nuestro avión. Para construir el avión, cada pieza se fabrica individualmente y después todas las piezas se ensamblan tal y como lo especifica el plano maestro y el comportamiento de todas las piezas en conjunto será lo que de a nuestro avión la capacidad de volar.

Si todo esto te suena lógico, entonces ya tienes lo que más importa en la programación de ActionScript (y en cualquier lenguaje OOP). Así como un aeroplano que surca los cielos es un conjunto de partes que cooperan entre si mismas siguiendo el diseño de un conjunto de planos, un programa es un grupo de OBJETOS que cooperan entre sí, basados en un conjunto de CLASES.   los objetos de ActionScript representan tanto los objetos tangibles como los conceptos intangibles de un programa. Por ejemplo: un objeto puede representar un número en un cálculo, un botón oprimible en una interfaz de usuario, un punto en el tiempo de un calendario o el efecto de difuminado de una imagen. Los objetos son encarnaciones (instancias) de sus respectivas clases. Las clases son los planos en los que se basan los objetos.

El primer paso para escribir un programa es determinar sus clases. Cada clase describe, en código, las características y comportamiento de un TIPO particular de objeto. Algunas clases deben ser escritas desde la nada, mientras que otras ya son proporcionadas por ActionScript y los diferentes Entornos de Ejecución Flash. Las clases escritas de la nada, conocidas cono clases personalizadas, son usadas para producir ciertos tipos de contenido especializado, como lo sería una orden de compra para una aplicación de ventas electrónicas, un auto en un juego de carreras o un mensaje en una aplicación de chat. Por el contrario, las clases proveídas por ActionScript y los diversos entornos de desarrollo (conocidas como clases incorporadas), son usadas para realizar tareas fundamentales como lo son  el crear números y texto, reproducir sonidos, mostrar imágenes, accesar a la red y responder a maniobras del usuario.

De las clases en un programa, creamos (instanciamos) objetos, después les decimos lo que tienen que hacer, con lo cual determinamos el comportamiento de todo el programa.

Construir un programa utilizando clases y objetos es lo que llamamos Programación Orientada a Objetos (OOP).

En el próximo post comenzaremos con la construcción de un verdadero programa, pero antes de hacerlo vamos a dar una ligera mirada a un importante grupo de clases, conocidas como CLASES NATIVAS, las cuales están construidas directamente dentro de ActionScript.

Las clases nativas que podemos ver en la siguiente tabla son usadas para manipular tipos básicos de información, como números y texto. Tengan por seguro que en sus programas usaran almenos una de estas clases, sin importar el tipo de programa que estén realizando. Consideren a estas clases como piezas prefabricadas, como las tuercas, tornillos y remaches de su avión que compran ya hechas a otro fabricante.


Sin más retraso aquí está la tabla:



Clases Nativas en ActionScript


Clase

Descripción

string

Representa datos Textuales (p.e. cadenas de carácteres)

Boolean

Representa a los estados lógicos verdadero (true) y falso (false)

Number

Representa números de punto flotante (números con un valor fraccionario)

int

Representa números enteros (que no tienen fracciones)

uint

Representa números enteros de valor positivo

Array

Representa una lista ordenada

Error

Representa un error del programa

Date

Representa un punto específico en el tiempo.

Math

Representa valores y operaciones matemáticas comunes.

RegExp

Define herramientas para buscar y reemplazar texto.

Function

Representa un juego de instrucciones reusables que pueden ser ejecutadas, o llamadas, repetivamente

Object

Define las características básicas de cada objeto en ActionScript

La próxima comenzaremos a crear un programa diseñado por Colin Moock para facilitar el aprendizaje de ActioScript. Se trata de un zoológico virtual.

Usando la técnica conocida como Scripting sobre línea de tiempo en la herramienta de autoría Flash, es posible crear un programa de ActionScript sin haber creado primero ninguna clase. Sin embargo, incluso si no quieres crear tus propias clases, deberías estudiar las técnicas presentadas en este blog. El entender como las clases son creadas te ayudará a adentrarte en ActionScript y en general te convertirá en mejor programador o programadora.

domingo, 27 de marzo de 2011

Compilación al Vuelo

Cuando un programa de ActionScript es ejecutado, el entorno de ejecución lee por completo el ByteCode de ActionScript y lo traduce en intrucciones de código máquina nativas, adaptadas específicamente para el hardware de la computadora en que está siendo ejecutado el progama. En muchos casos, el código máquina es guardado para que este pueda ser usado de nuevo sin necesidad de que sea traducido nuevamente.

Así como el convertir código de ActionScript a ByteCode le llamamos compilar, el proceso de traducir ese ByteCode a código máquina y guardarlo para su posterior ejecución es llamado de igual manera: compilación.

Profundizando, la mayoría del código de ActionScript se divide en dos niveles de compilación: Primero el desarrollador  compila el código fuente de su formato entendible por humanos  a un formato entendible por el entorno Flash (el bytecode de ActionScript), entonces, el entorno Flash compila  automáticamente a un formato entendible por el hardware que está ejecutando el programa (el código máquina nativo).

Esta última etapa de compilación (byteCode a código Máquina) se conoce como Compilación al Vuelo o JIT por sus siglas en inglés (Just in Time). pues ocurre justamente en el momento en que el bytecode es requerido por el programa. A la compilación al vuelo se le llama también traducción dinámica.

Los programadores experimentados se alegrarán saber que el código en el nivel más alto de una definición de clase  no se compila al vuelo, pues solo se utiliza una vez, lo cual representa una mejora en rendimiento si aprovechan esa característica e sus programas.

sábado, 26 de marzo de 2011

Compilación

Antes de que un programa ActionScript pueda ser ejecutado por un Entorno de Ejecución Flash, este debe de ser convertido desde el código ActionScript 3.0 entendible por humanos a un formato mucho más condensado, un formato binario que los Entornos Flash puedan entender, conocido como ByteCode de ActionScrip o ABC.

Por sí mismo, entonces, ActionScript no puede ser ejecutado por los Entornos de Ejecución, por lo que debe ser embotellado en un archivo contenedor binario al que se le conoce como Archivo .swf. El Archivo .swf almacena el ByteCode y cualquier agregado multimedia (imágenes, sonidos, videos, etc.)  requeridos por el programa ActonScript en un Formato de Archivo Flash, o SWF.

Al proceso de convertir un programa de ActionScript a ByteCode le llamamos compilación. El proceso de generar un archivo .swf se le llama encapsular, exportar o publicar.

Para compilar programas de ActionScript 3.0 y archivos .swf utilizamos un módulo de software al que llamamos compilador. Un compilador que compila código de ActionScript se le llama... se imaginan??... sí, acertaron: Compilador de ActionAcript y por si quedan dudas, a un compilador que genera archivos .swf se le conoce como Compilador SWF.

Cualquier Compilador SWF que presuma de tener total soporte para el Formato de Archivo Flash incluye un compilador de ActionScript. Obviamente Flex Builder y Flash Autoring Tool comparten el mismo compilador de ActionScript, pero tienen compiladores SWF diferentes (Compilador Flex y Compilador Flash respectivamente). Adobe también ofrece el compilador Flex como una aplicación como un comando de consola llamado mxmlc. El compilador mxmlc se incluye en las herramientas de desarrollo libres de Adobe Flex SDK, disponibles en: http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK.

Aunque mxmlc solo está disponible para Windows, gracias ha que ha sido escrito en Java es posible utilizarlo también en sistemas Macintosh y Linux. Dentro de un tiempo hablaremos sobre esto, pero si son poco pacientes pueden seguir estas instrucciones (en inglés) para poder compilar sus programas.

viernes, 25 de marzo de 2011

Entornos de Ejecución Clientes para Flash

Los programas escritos en ActionScript pueden ser ejecutados por tres aplicaciones de software  diferentes (producidos por Adobe): Flash Player, Adobe AIR y Flash Lite; además de diversas aplicaciones libres como: Gnash.

Flash Player ejecuta programas de ActionScript sobre un navegador web o en modo solitario sobre el escritorio. Flash Player tiene muy poco acceso al sistema operativo, no puede manejar ficheros, controlar ventanas o acceder a la mayoría del hardware.

Adobe AIR ejecuta programas ActionScript sobre el escritorio y tiene una integración completa con el sistema operativo, lo que quiere decir que este si puede manejar ficheros, controlar ventanas y tener acceso completo a todos los dispositivos (incluyendo juguetes para cibersexo) que tenga el usuario instalados en su equipo.

Flash Lite ejecuta programas ActionScript sobre dispositivos móbiles, como PDAs, teléfonos celulares, tablets, consolas de videojuegos y un creciente número de etcéteras. Ofrece una mayor optimización en cuanto rendimiento y acceso a hardware específico de los dispositivos móviles, ya sea cámara, GPS, Vibrador o giroscopio.

Gnash es la propuesta libre creada por GNU que busca cumplir con todas las funciones de Flash Player. Está diseñado para actuar en modo solitario o embebido en un navegador web y ofrece soporte casi completo para los programas compilados en un formato SWF v7 y algunas de SWF v8 y v9.

En términos generales, Flash Player, Adobe AIR, Flash Lite y Gnash son conocidos como Entornos de Ejecución Clientes para Flash (o Entornos Flash para abreviar) porque estos manipulan programas ActionScript mientras lo ejecutan (corren). Los Entornos Flash están disponibles para Windows, Macintosh y Linux. así como en una gran variedad de dispositivos móbiles. Debido a que los programas de ActionScript son ejecutados por un Entorno Flash, no por un sistema operativo o dispositivo hardware específico, cada programa es considerado como multiplataforma, pues puede correr en diversas plataformas de hardware y sistemas operativos.

En discusiones casuales, el término Maquina Virtual de ActionScript es utilizado algunas veces como sinónimo de Entorno de Ejecución cliente para Flash. Sin embargo existe una diferencia sustancial entre ambos términos y no deberían ser tomados como iguales.

La Maquina Virtual de ActionScript (AVM) es técnicamente el módulo de software dentro de Flash Player, Adobe AIR y Flash Lite que ejecuta los programas de ActionScript. Pero cada Entorno Flash tiene también otras responsabilidades, como mostrar contenido en la pantalla, correr adio y video, comunicarse con el sistema operativo, etc. La versión específica de la Maquina virtual de ActionScript que ejecuta código ActionScript 3.0 se conoce como AVM2. La versión específica de la Máquina virtual de ActionScript que ejecuta código ActionScript 1.0 y 2.0 se conoce como AVM1. Gnash utiliza gameswf  (se pronuncia "gueim esguaiff", no me hagan llamar al desarrollador para que les explique) como Maquina Virtual y está liberado bajo una licencia de dominio público,

En Noviembre de 2006 Adobe anunció la donación del código fuente de AVM2 a la Fundación Mozilla como parte del Proyecto Tamarind, que busca la creación de estándares de código abierto, con lo cual AVM2 se convirtió en un desarrollo de código abierto y su código fuente puede ser obtenido por medio de los repositorios del Proyecto Tamarind.

jueves, 24 de marzo de 2011

Herramientas para escribir código en ActionScript

El código de ActionScript se escribe en texto plano, por lo tanto un programa de ActionScript puede ser creado sin nada más que un simple editor de texto como Notepad en windows, TexEdit en Macintosh o Emacs en Linux. Sin embargo, la mayoría de los programadores de ActionScript usan uno (o ambos) de las dos herramientas comerciales  producidas por Adobe Systems Incorporated: Flex builder y Flash authoring tool.

Flex Builder es un Entorno de Desarrollo Integrado (IDE por sus siglas en inglés). Un IDE es una aplicación que sirve para escribir y manipular código, mucho mejor que un procesador de textos que solo fue diseñado para crear documentos imprimibles. Los desarrolladores usan Flex builder para crear aplicaciones de software y contenido multimedia utilizando ya sea  ActionScript o MXML... o ambos. MXML es un lenguaje basado en XML usado para describir interfaces de usuario.

En contraste, Flash authoring tool tiene un diseño híbrido, es un editor de animación y de programación. Los desarrolladores usan Flash authoring tool para crear aplicaciones de software y contenido multimedia combinando con el código ActionScript con gráficos dibujados manualmente, animación y agregados multimedia.

ActionScript 3.0 es soportado por Flex Builder 2 o superior y por Flash CS3 Versión 9 de Flash authoring tool) o superior, para obtener una copia de Flex Builderpuedes visitar http://www.adobe.com/products/flex/. Para obtener una copia de Flash authoring tool visita http://www.adobe.com/products/flash/.

La mayor parte del contenido de este blog se basa en la creación de aplicaciones de software y contenido multimedia utilizando solamente ActionScrip, No se abordará mucho sobre su uso dentro de Flash authoring tool

miércoles, 23 de marzo de 2011

Introducción

Un programa es un juego de instrucciones escritas para ser ejecutadas por una computadora o una aplicación de software. El texto escrito en lenguaje entendible por los humanos se conoce como "código fuente" o simplemente "código". La persona que crea un programa es llamado "programador" o "desarrollador". Cada  programa está escrito en un lenguaje de programación en particular, de la misma manera en que cada libro está escrito en un lenguaje en particular (español, inglés, frances, etc.).

El lenguaje de programación indica la sintaxis y gramática que los programadores deberán usar para dar forma a las instrucciones  del programa que están creando.

Este blog se dedica a traducir y complementar a manera de curso para cubrir a fondo el uso de un lenguaje en específico: ActionScript 3.0.

Los temas serán tratados a fondo, la mayoría de los textos son traducidos desde el idioma inglés y no se proporciona ninguna garantía sobre su contenido. El uso de las recomendaciones y código aqui mostrado es responsabilidad  de la persona que lo usa y este blog se deslinda de cualquier uso inapropiado, así como del daño que pudiese ser provocado por el uso del código que aquí se proporciona.

Este blog tiene un propósito meramente educativo y no busca interés económico alguno.

Suerte y feliz lectura.