???
Monday, April 27th, 2009

Ya queda poco.

Ya queda poco.

Os dejo el nuevo juego que está causando furor en internete.
No os preocupéis por los combates, vuestro bruto es tan inteligente que no tendréis que hacer nada, simplemente encended un cigarro (u otra cosa con aspecto de cigarro) y disfrutad de la lucha.
Stage-->MainTimeLine-->MovieClip-->TextField-->MovieClip-->MainTimeline-->Stage
Cuando el evento se transmite hacia el objeto se le conoce como la Fase de Captura.
Cuando llega al TextField es la Target Fase.
Cuando vuelve a subir hacia el Stage Fase de Burbujeo (Bubbing)
La fase de captura no se utiliza a no ser que lo especifiques explicitamente.
Se suele usar para deshabilitar eventos.
Para enviar eventos usamos la clase EventDispatcher.
Se puede usar por herencia o por composición.
Después tenemos que crear el evento
o lo que sería mejor
y después tenemos que distribuir (lanzar) el evento:
Para usarlo por composición tenemos que implementar IEventDispatcher
En el constructor nos creamos un nuevo EventDispatcher();
Después en cada función definida por la Interfaz devolvemos el dispatcher:
Cualquier DisplayObject hereda de DispatchEvent
Si queremos crear un evento propio nuestro tenemos que crear una nueva clase que herede de Event y que llame explicitamente al constructor y crear una constante estática con el nombre y valor que queramos como evento.
Después en la clase en la que vamos a usar el evento generamos un nuevo evento EjemploEvent
En la clase en la que nos vayamos a apuntar al evento
Programación Procedural
Instrucciones que generan procedimientos
En ActionScript todo lo relacionado a funciones que generan tareas.
Pros
- Implantación rápida, resultados rápidos
Contras
- Poco mantenible a la larga, en aplicaciones con más de 500 líneas de código.
Orientado a Objetos
Divide el código en entidades diferentes
Pros
Escalables
Metodología de programación
Contras
Implantación lenta
Fácil abuso de ella sobrearquitectura de las cosas
Objeto
Es un subprograma que mantiene información y funcionalidad que maneja esa información que se está guardando
A los datos se los conoce como propiedades y a las funciones cómo métodos.
Clases
Plantilla para crear objetos
Definición abstracta de lo que va a ser un objeto.
Todos los objetos creados a partir de una misma clase van a tener los mismos métodos y propiedades.
Lo que crea un objeto único o diferente a otro es el valor de las propiedades.
Clases sin propiedades se hacen estáticas como la clase Math.
Todo lo que se puede hacer en flash está encapsulado en clases.
Paquetes
Un paquete puede contener otro paquete, clases o definiciones de funciones.
1.- Paquete Flash
La utilización de este paquete no añade código ni peso a nuestra película. Se encuentra integrado dentro del flash player.
2.- Librería FL
Son los componentes de flash. No viene compilada dentro del flash player. Hay que añadir el código a la película flash cuando usemos un componente.
3.- Libería mx
Componentes de Flex
Sirven para organizar el código y para que no halla colisión entre nombres.
Como crear un objeto a partir de una clase
Operador new
Una vez instanciado el objeto podemos acceder a sus métodos y propiedades
punto.offset(30, 10); // Offset desplaza el punto
trace(punto); salida (60, 10);
El constructor puede recibir parámetros, si vienen entre corchetes, éstos son opcionales.
Si escribimos el código en línea de tiempo podemos usar los paquetes sin importarlos.
Cuando trabajemos con clases tenemos que importar las clases.
import flash.geom.Point;
import flash.geom.*; // importa el paquete entero
Importando una clase no se añade el código al swf. Si no tiene el paquete importado se va a ir al top level a buscar.
En el momento de compilación busca las clases y las compila en el .swf
Cuando se instancia una clase flash va a mirar si es una clase del top level --> si no, se pone a mirar en las directivas import del código para buscar la clase.
COMO CREAR UNA CLASE
creamos el nombre del paquete, si no va dentro de ningún paquete lo dejamos vacío pero usamos la declaración de package
Por cada archivo de ActionScript solo puede haber una definición o de función o de clase.
CLASSPATH (rutas de clase)
Ruta donde va a buscar flash las clases en el disco.
1.- DE DOCUMENTO
2.- GLOBALES
Se configuran en preferencias --> ActionScript
De manera predeterminada vienen dos classpath por defecto
"." va a buscar en el mismo directorio que el propio archivo .fla
$(AppConfig)/ActionScript 3.0/Classes va a buscar en el directorio Adobe Flash CS3 es
Archivos .swc código precompilado ,no son más que archivos .zip con un archivo xml y otro swf
Podemos insertar los classpath que queramos
Librería Standard (Clases de Flash)
Clases del proyecto (Clases que están al lado del fla)
Nuestra librería de clases
En configuración de publicación en la pestaña de Flash tenemos tambien una Ruta de Clases, pero solo para ese archivo.
En configuración de publicación tenemos una pestaña que crea un SWC, código precompilado para dar al cliente cuando no queremos dar nuestras clases.
ATRIBUTOS DE CONTROL DE ACCESO o Visibilidad
Se usan tanto en propiedades como métodos, asigna quien puede utilizar esa función, clase o método.
public: cualquiera puede ver/utilizar esa definición
private: solo se puede usar desde este código (desde esta clase), métodos de ayuda dentro de la clase. Pensado para uso interno.
protected: lo pueden ver la clase y las subclases
internal: solo puede ser visto por otras clases que estén dentro del mismo paquete. Es el valor por defecto cuando no ponemos ningún atributo.
PROGRAMACIÓN ORIENTADA A OBJETOS
CUALIDADES
1- Abstracción:
Nunca se debería saber el funcionamiento de una clase para poder usarla.
2.- Encapsulamiento:
Una clase no debería dejar modificar sus propiedades.
No poner propiedades públicas.
3.- Herencia
4.- Polimorfismo
Capacidad de una clase para comportarse como diferentes tipos de clases.
Se hace la diferencia entre tipo y clase, es decir, la clase círculo es del tipo FormaGeometrica.
Esto es posible gracias al polimorfismo, el tipo puede ser la superclase (FormaGeometrica) y el valor siempre será el objeto que pasemos, es decir, si como tipo ponemos la superclase podremos pasar como parámetro cualquiera de las subclases (Circulo, Cuadrado, Triangulo, etc).
Después con is podemos averiguar de que tipo es la clase y actuar de una forma u otra con ella.
Pej.
Cuando hablamos de polimorfismo podemos decir: "Tiene un..."
La herencia es una relación entre clases.
Permite que una clase herede la funcionalidad de otra (propiedades y métodos).
A la clase superior se la conoce como clase superior o clase base. La clase que hereda se la conoce como subclase o extensión.
Una subclase solo puede tener una superclase.
Cuanto más se baja en la cadena de herencia se vuelven más especializadas las clases.
Desde una subclase no se puede acceder a las propiedades privadas de la superclase.
Podemos usar protected para acceder desde la subclase a una propiedad de la superclase, pero no permitir su acceso desde otros lugares.
Public: permite acceder a propiedades y métodos desde cualquier sitio (miembros y clases)
Protected: permite acceder desde dentro de la clase y sus subclases. (miembros)
Private: solo permite desde la propia clase. (miembros)
Internal: solo permite acceder desde el mismo paquete (miembros y clases)
* miembro: propiedades y métodos
Atributos de clase
final
dynamic
internal
public
El atributo final se usa para que no se pueda heredar de una clase.
Dynamic indica que esa clase puede tener propiedades dinámicas (ej. Object, MovieClip).
LOS MÉTODOS Y PROPIEDADES ESTÁTICOS NO SE HEREDAN
Override
Si creamos un método en la subclase con el mismo nombre que en la superclase nos sale un error para evitar problemas.
Para sobreescribir un método de la superclase tenemos que marcarla como override en la subclase, después podremos ejecutar el código del método de la superclase escribiendo super.
Si además queremos que se ejecute el código de la clase superior al hacer el override podemos usar super.
Para poder ocultar un método con override el método debe tener la misma firma que la superclase (exacta).
Cuando hablamos de herencia podemos decir: "Es un..."
Ej. Un Ferrari es un deportivo que a su vez es un coche
Donde utilizamos una superclase podemos usar una subclase.
Gracias a la herencia podemos hacer un casting de obj para tratarlo como un MovieClip:
1.- Casting
2.- Conversión
Quizá se vea más claro con Number y String:
Como lanzar una función desde un campo de texto en AS3:
campo_txt.htmlText = "Hola <a href='event:El texto del ancla'>Ancla</a>";