2. ObjetivosObjetivos
Crear un archivo ActionScript utilizando lasCrear un archivo ActionScript utilizando las
herramientas de Flash CS4.herramientas de Flash CS4.
Crear una clase ActionScript que herede de la claseCrear una clase ActionScript que herede de la clase
MovieClip.MovieClip.
Crear el constructor de una función.Crear el constructor de una función.
Definir parámetros para los métodos de las clases.Definir parámetros para los métodos de las clases.
Usar código ActionScript para crear figurasUsar código ActionScript para crear figuras
vectoriales.vectoriales.
Usar código para crear instancias de clasesUsar código para crear instancias de clases
“customizadas” en la línea de tiempo.“customizadas” en la línea de tiempo.
Uso del evento MOUSE_MOVE.Uso del evento MOUSE_MOVE.
Detener un detector de eventos (event listener).Detener un detector de eventos (event listener).
Generar colores aleatorios.Generar colores aleatorios.
3. ¿Qué es una clase?¿Qué es una clase?
Las clases son declaraciones oLas clases son declaraciones o
abstracciones deabstracciones de objetosobjetos, lo que significa,, lo que significa,
que una clase es la definición de unque una clase es la definición de un
objeto.objeto.
Una clase es una agrupación de datosUna clase es una agrupación de datos
(propiedades) y de funciones (métodos)(propiedades) y de funciones (métodos)
que operan sobre esos datos.que operan sobre esos datos.
A un objeto creado de una clase se leA un objeto creado de una clase se le
llamallama instanciainstancia..
4. ¿Cómo se hace una clase en AS¿Cómo se hace una clase en AS
3.0?3.0?
Las clases son archivos .as, externos alLas clases son archivos .as, externos al
archivo .fla.archivo .fla.
Un “paquete” oUn “paquete” o packagepackage es un directorio oes un directorio o
carpeta que contiene clases.carpeta que contiene clases.
Para poder visualizar una instancia en elPara poder visualizar una instancia en el
escenario es necesario que “herede” lasescenario es necesario que “herede” las
propiedades y métodos de una de laspropiedades y métodos de una de las
clases visuales MovieClip o Sprite.clases visuales MovieClip o Sprite.
5. Bases de la OOPBases de la OOP
Conceptos fundamentales en la OOPConceptos fundamentales en la OOP
son:son:
1.1. ClaseClase: definiciones de las propiedades: definiciones de las propiedades
y métodos de un tipo de objeto concreto.y métodos de un tipo de objeto concreto.
2.2. Instancia: Es una copia concreta de unaInstancia: Es una copia concreta de una
clase.clase.
3.3. La instanciación es la lectura de estasLa instanciación es la lectura de estas
definiciones y la creación de un objeto adefiniciones y la creación de un objeto a
partir de ellas.partir de ellas.
6. Bases de la OOPBases de la OOP
3.3. PropiedadPropiedad: es un tipo de datos: es un tipo de datos
asociados a un objeto (o a una clase deasociados a un objeto (o a una clase de
objetos), y se define como susobjetos), y se define como sus
características predeterminadas, y cuyocaracterísticas predeterminadas, y cuyo
valor puede ser alterado por la ejecuciónvalor puede ser alterado por la ejecución
de algún método.de algún método.
7. Bases de la OOPBases de la OOP
4. Método4. Método: Función asociada a un objeto: Función asociada a un objeto
(o a una clase), cuya ejecución se(o a una clase), cuya ejecución se
desencadena tras la recepción de undesencadena tras la recepción de un
"mensaje". Es lo que el objeto “puede"mensaje". Es lo que el objeto “puede
hacer”. Un método puede producir unhacer”. Un método puede producir un
cambio en las propiedades de la instancia,cambio en las propiedades de la instancia,
o la generación de un "evento" con uno la generación de un "evento" con un
nuevo mensaje para otro objeto delnuevo mensaje para otro objeto del
sistema.sistema.
8. Bases de la OOPBases de la OOP
5. Evento5. Evento: un suceso en el sistema (tal: un suceso en el sistema (tal
como una interacción del usuario, o uncomo una interacción del usuario, o un
mensaje enviado por un objeto). Elmensaje enviado por un objeto). El
sistema maneja el evento enviando elsistema maneja el evento enviando el
mensaje adecuado al objeto pertinente.mensaje adecuado al objeto pertinente.
También se puede definir como evento, aTambién se puede definir como evento, a
la reacción que puede desencadenar unala reacción que puede desencadenar una
instancia, es decir la acción que genera.instancia, es decir la acción que genera.
9. Bases de la OOPBases de la OOP
En resumen: una clase puede tener uno oEn resumen: una clase puede tener uno o
más de las siguientes partes:más de las siguientes partes:
CLASE
Propiedades
(Datos)
Métodos
(Código)
Eventos
(Mensajes)
10. Bases de la OOPBases de la OOP
Una clase es un ente abstracto queUna clase es un ente abstracto que
contiene (al menos una) propiedades,contiene (al menos una) propiedades,
métodos y eventos, y una instancia es unamétodos y eventos, y una instancia es una
copia de la clase en el escenario:copia de la clase en el escenario:
CLASE
Instancia 1
Instancia 2
Instancia 3
11. Conceptos fundamentales en OOPConceptos fundamentales en OOP
AbstracciónAbstracción: Denota las características: Denota las características
esenciales de un objeto, donde seesenciales de un objeto, donde se
capturan sus comportamientos. Cadacapturan sus comportamientos. Cada
objeto en el sistema sirve como modelo deobjeto en el sistema sirve como modelo de
un "agente" abstracto que puede realizarun "agente" abstracto que puede realizar
trabajo, informar y cambiar su estado, ytrabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el"comunicarse" con otros objetos en el
sistema sin revelarsistema sin revelar cómocómo se implementanse implementan
estas características.estas características.
12. Conceptos fundamentales en OOPConceptos fundamentales en OOP
AbstracciónAbstracción (continua): Los procesos,(continua): Los procesos,
las funciones o los métodos puedenlas funciones o los métodos pueden
también ser abstraídos y cuando lo están,también ser abstraídos y cuando lo están,
una variedad de técnicas son requeridasuna variedad de técnicas son requeridas
para ampliar una abstracción.para ampliar una abstracción.
13. Conceptos fundamentales en OOPConceptos fundamentales en OOP
EncapsulamientoEncapsulamiento : Significa reunir a: Significa reunir a
todos los elementos que puedentodos los elementos que pueden
considerarse pertenecientes a una mismaconsiderarse pertenecientes a una misma
entidad, al mismo nivel de abstracción.entidad, al mismo nivel de abstracción.
Esto permite aumentar la cohesión de losEsto permite aumentar la cohesión de los
componentes del sistema. Algunoscomponentes del sistema. Algunos
autores confunden este concepto con elautores confunden este concepto con el
principio de ocultación, principalmenteprincipio de ocultación, principalmente
porque se suelen emplear conjuntamente.porque se suelen emplear conjuntamente.
14. Conceptos fundamentales en OOPConceptos fundamentales en OOP
Principio de ocultaciónPrincipio de ocultación : Cada objeto: Cada objeto
está aislado del exterior, es un móduloestá aislado del exterior, es un módulo
natural, y cada tipo de objeto expone unanatural, y cada tipo de objeto expone una
interfazinterfaz a otros objetos que especificaa otros objetos que especifica
cómo pueden interactuar con los objetoscómo pueden interactuar con los objetos
de la clase.de la clase.
15. Conceptos fundamentales en OOPConceptos fundamentales en OOP
Principio de ocultación (continua)Principio de ocultación (continua) ::
El aislamiento protege a las propiedadesEl aislamiento protege a las propiedades
de un objeto contra su modificación porde un objeto contra su modificación por
quien no tenga derecho a acceder a ellas,quien no tenga derecho a acceder a ellas,
solamente los propios métodos internossolamente los propios métodos internos
del objeto pueden acceder a su estado.del objeto pueden acceder a su estado.
La aplicación entera se reduce a unLa aplicación entera se reduce a un
agregado o rompecabezas de objetos.agregado o rompecabezas de objetos.
16. Conceptos fundamentales en OOPConceptos fundamentales en OOP
PolimorfismoPolimorfismo: comportamientos: comportamientos
diferentes, asociados a objetos distintos,diferentes, asociados a objetos distintos,
pueden compartir el mismo nombre, alpueden compartir el mismo nombre, al
llamarlos por ese nombre se utilizará elllamarlos por ese nombre se utilizará el
comportamiento correspondiente al objetocomportamiento correspondiente al objeto
que se esté usando.que se esté usando.
17. Conceptos fundamentales en OOPConceptos fundamentales en OOP
PolimorfismoPolimorfismo: O dicho de otro modo, las: O dicho de otro modo, las
referencias y las colecciones de objetosreferencias y las colecciones de objetos
pueden contener objetos de diferentespueden contener objetos de diferentes
tipos, y la invocación de untipos, y la invocación de un
comportamiento en una referenciacomportamiento en una referencia
producirá el comportamiento correcto paraproducirá el comportamiento correcto para
el tipo real del objeto referenciado.el tipo real del objeto referenciado.
ActionScript no acepta operadoresActionScript no acepta operadores
sobrecargados.sobrecargados.
18. Conceptos fundamentales en OOPConceptos fundamentales en OOP
HerenciaHerencia: las clases no están aisladas, sino que se: las clases no están aisladas, sino que se
relacionan entre sí, formando una jerarquía derelacionan entre sí, formando una jerarquía de
clasificación.clasificación.
Los objetos heredan las propiedades y elLos objetos heredan las propiedades y el
comportamiento de todas las clases a las quecomportamiento de todas las clases a las que
pertenecen.pertenecen.
La herencia organiza y facilita el polimorfismo y elLa herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidosencapsulamiento permitiendo a los objetos ser definidos
y creados como tipos especializados de objetosy creados como tipos especializados de objetos
preexistentes.preexistentes.
Estos pueden compartir (y extender) su comportamientoEstos pueden compartir (y extender) su comportamiento
sin tener que volver a implementarlo. AS no acepta aúnsin tener que volver a implementarlo. AS no acepta aún
herencias múltiples.herencias múltiples.
19. Estructura básica de unaEstructura básica de una
clase en ActionScript 3.0clase en ActionScript 3.0
Unidad 4Unidad 4
20. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
1.1. Debes de crear un archivo AS yDebes de crear un archivo AS y
nombrarlo como quieres tu clase.nombrarlo como quieres tu clase.
2.2. El nombre de la clase no puede ser unaEl nombre de la clase no puede ser una
existente, por ejemplo, MovieClip.existente, por ejemplo, MovieClip.
3.3. El nombre del archivo deberá iniciar conEl nombre del archivo deberá iniciar con
mayúscula, sin espacios ni caracteresmayúscula, sin espacios ni caracteres
especiales.especiales.
4.4. Puedes grabar la misma en un directorioPuedes grabar la misma en un directorio
diferente al de la película FLA.diferente al de la película FLA.
21. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
5. Una vez grabado el archivo, deberás5. Una vez grabado el archivo, deberás
colocar sobre el editor la estructuracolocar sobre el editor la estructura
packagepackage, por ejemplo:, por ejemplo:
package {package {
}}
22. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
6. Un paquete puede tener más de una6. Un paquete puede tener más de una
clase, pero solo una clase principal.clase, pero solo una clase principal.
7. Si guardaste la clase en un directorio7. Si guardaste la clase en un directorio
diferente al de la película FLA, deberásdiferente al de la película FLA, deberás
indicarlo en la sentencia, por ejemplo:indicarlo en la sentencia, por ejemplo:
package misClases.scripts {package misClases.scripts {
}}
23. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
8. Para poder ser la clase visual, deberá8. Para poder ser la clase visual, deberá
heredar a otra clase visual, por ejemploheredar a otra clase visual, por ejemplo
MovieClipMovieClip oo SpriteSprite. Para ello deberás. Para ello deberás
importar la clase primero:importar la clase primero:
import flash.display.MovieClip;import flash.display.MovieClip;
24. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
9. Para crear la clase principal del paquete9. Para crear la clase principal del paquete
deberás declararla como publica (deberás declararla como publica (publicpublic).).
Posteriormente la palabra reservadaPosteriormente la palabra reservada class,class,
seguida del nombre de la clase (debe serseguida del nombre de la clase (debe ser
exactamente el mismo que el del archivo, con laexactamente el mismo que el del archivo, con la
primer letra en mayúscula).primer letra en mayúscula).
public class Elipse {public class Elipse {
}}
25. Estructura básica de una clase enEstructura básica de una clase en
ActionScript 3.0ActionScript 3.0
10. Si la clase es de tipo visual (se10. Si la clase es de tipo visual (se
desplegará en el escenario) necesitadesplegará en el escenario) necesita
extenderla a la clase MovieClip o Sprite.extenderla a la clase MovieClip o Sprite.
public class Elipse extends MovieClip{public class Elipse extends MovieClip{
}}
27. Modificadores de accesoModificadores de acceso
Los modificadores de acceso restringen a otrosLos modificadores de acceso restringen a otros
objetos de acceder a las propiedades y métodosobjetos de acceder a las propiedades y métodos
del objeto (encapsulamiento). Los modificadoresdel objeto (encapsulamiento). Los modificadores
de acceso para una clase son:de acceso para una clase son:
– public: Todos los objetos pueden accesarla.public: Todos los objetos pueden accesarla.
– private: Sólo son accesibles los métodos yprivate: Sólo son accesibles los métodos y
propiedades dentro de la clase.propiedades dentro de la clase.
– protected: Sólo es accesible para clases extendidasprotected: Sólo es accesible para clases extendidas
(por el método(por el método extendsextends).).
– internal: Solo es accesible a otras clases dentro delinternal: Solo es accesible a otras clases dentro del
paquete.paquete.
29. Función constructora de una claseFunción constructora de una clase
La función constructora:La función constructora:
– Crea el objeto y le da “tipo” a la clase.Crea el objeto y le da “tipo” a la clase.
– Siempre es pública (Siempre es pública (publicpublic).).
– Debe tener el mismo nombre que el archivo yDebe tener el mismo nombre que el archivo y
la clase (inicia igual con Mayúscula).la clase (inicia igual con Mayúscula).
– Se llama automáticamente al momento deSe llama automáticamente al momento de
crear un objeto.crear un objeto.
– Si no se crea una función costructora,Si no se crea una función costructora,
ActionScript creará una vacía.ActionScript creará una vacía.
30. Función constructora de una claseFunción constructora de una clase
Ejemplo de una función constructora:Ejemplo de una función constructora:
public function Elipse(w:Number=400){public function Elipse(w:Number=400){
}}
32. Parámetros opciones y requeridosParámetros opciones y requeridos
EN AS 3.0, podemos utilizar parámetrosEN AS 3.0, podemos utilizar parámetros
opcionales, tanto en la funciónopcionales, tanto en la función
constructora como en cualquier otraconstructora como en cualquier otra
función.función.
Para ello le asignaremos un valor alPara ello le asignaremos un valor al
momento de ser creada en los paréntesismomento de ser creada en los paréntesis
de la funciónde la función
33. Parámetros opciones y requeridosParámetros opciones y requeridos
Por ejemplo:Por ejemplo:
public function Elipse(w:int=40, h:int=40){public function Elipse(w:int=40, h:int=40){
}}
La función anterior, tomarán losLa función anterior, tomarán los
parámetros w y h el valor de 40, si es queparámetros w y h el valor de 40, si es que
el usuario no asigna ningún valor.el usuario no asigna ningún valor.
35. API de dibujoAPI de dibujo
La funcionalidad integrada en ActionScriptLa funcionalidad integrada en ActionScript
que permite crear gráficos vectorialesque permite crear gráficos vectoriales
(líneas, curvas, formas, rellenos y(líneas, curvas, formas, rellenos y
degradados) y mostrarlos en la pantalladegradados) y mostrarlos en la pantalla
mediante ActionScript recibe el nombre demediante ActionScript recibe el nombre de
API de dibujo.API de dibujo.
Una interfaz de programación deUna interfaz de programación de
aplicaciones oaplicaciones o APIAPI (del inglés(del inglés ApplicationApplication
Programming InterfaceProgramming Interface) .) .
36. API de dibujoAPI de dibujo
La clase flash.display.Graphics es laLa clase flash.display.Graphics es la
encargada de proporcionar estaencargada de proporcionar esta
funcionalidad. Con ActionScript es posiblefuncionalidad. Con ActionScript es posible
dibujar en cualquier instancia de Shape,dibujar en cualquier instancia de Shape,
Sprite o MovieClip utilizando la propiedadSprite o MovieClip utilizando la propiedad
graphics definida en cada una de esasgraphics definida en cada una de esas
clases. (La propiedadclases. (La propiedad graphicsgraphics de cadade cada
una de esas clases es en realidad unauna de esas clases es en realidad una
instancia de la claseinstancia de la clase GraphicsGraphics.).)
37. API de dibujoAPI de dibujo
En AS 3.0 contamos con métodos queEn AS 3.0 contamos con métodos que
nos permiten dibujar formas geométricasnos permiten dibujar formas geométricas
como círculos, elipses y rectángulos.como círculos, elipses y rectángulos.
Primero definimos el color de relleno conPrimero definimos el color de relleno con
la intrucción:la intrucción:
graphics.beginFill(color);graphics.beginFill(color);
38. API de dibujoAPI de dibujo
Posteriormente dibujamos una elipse:Posteriormente dibujamos una elipse:
graphics.drawEllipse(0,0,w,h);graphics.drawEllipse(0,0,w,h);
Por último cerramos el dibujo con:Por último cerramos el dibujo con:
graphics.endFill();graphics.endFill();
Con estos pasos definimos una elipse deCon estos pasos definimos una elipse de
w x h pixeles en las coordenadas 0,0w x h pixeles en las coordenadas 0,0
40. Crear instancias de clase en ASCrear instancias de clase en AS
3.03.0
Para crear instancias de una clase, loPara crear instancias de una clase, lo
hacemos por medio de la palabrahacemos por medio de la palabra
reservadareservada newnew..
Cuando creamos una instancia conCuando creamos una instancia con newnew,,
llamamos y ejecutamos a la funciónllamamos y ejecutamos a la función
constructora, por ejemplo:constructora, por ejemplo:
var elipse:Elipse = new Elipse();var elipse:Elipse = new Elipse();
41. La lista de visualizaciònLa lista de visualizaciòn
y addChild()y addChild()
Unidad 4Unidad 4
42. La lista de visualización yLa lista de visualización y
addChild()addChild()
En AS 3.0, los objetos son manejados porEn AS 3.0, los objetos son manejados por
medio de la lista de visualización (displaymedio de la lista de visualización (display
list).list).
Para los objetos desarrollados por medioPara los objetos desarrollados por medio
del IDE (del IDE (Integrated developmentIntegrated development
environment o Entorno de desarrolloenvironment o Entorno de desarrollo
integrado)integrado) son puestos en la lista de
visiualización sin que el usuario se de
cuenta.
43. La lista de visualización yLa lista de visualización y
addChild()addChild()
Cuando se crean objetos con ActionScript,Cuando se crean objetos con ActionScript,
es necesario colocar estos objetos en laes necesario colocar estos objetos en la
lista de visualización por medio dellista de visualización por medio del
comandocomando addChild().addChild().
Hasta este momento, el usuario podrá verHasta este momento, el usuario podrá ver
el objeto.el objeto.
44. Encender y apagar unEncender y apagar un
listenerlistener
Unidad 4Unidad 4
45. Encender y apagar un listenerEncender y apagar un listener
Un punto muy importante en el manejo deUn punto muy importante en el manejo de
listeners, es poder apagarlos cuando yalisteners, es poder apagarlos cuando ya
no son necesarios.no son necesarios.
Para ello utilizamos el métodoPara ello utilizamos el método
removeListenerremoveListener con los parámetros delcon los parámetros del
listener original. Por ejemplo:listener original. Por ejemplo:
stage.removeListener(MouseEvent.MOUSE_MOVE, dibuja)stage.removeListener(MouseEvent.MOUSE_MOVE, dibuja)
47. Generar colores aleatoriosGenerar colores aleatorios
Para generar número aleatorios, tenemos elPara generar número aleatorios, tenemos el
metodo random() de la clase Math, el cualmetodo random() de la clase Math, el cual
genera número aleatorios del 0 al númerogenera número aleatorios del 0 al número
0.99999999999999.0.99999999999999.
Los número aleatorios no tienen relación entreLos número aleatorios no tienen relación entre
ellos.ellos.
Para generar colores aleatorios, multiplicaremosPara generar colores aleatorios, multiplicaremos
un número aleatorio por el mayor color posible,un número aleatorio por el mayor color posible,
en este caso, el blancoen este caso, el blanco
50. Preguntas de revisiónPreguntas de revisión
¿Cuándo crea un archivo de clase, cómo¿Cuándo crea un archivo de clase, cómo
debe ser nombrado?debe ser nombrado?
¿Cómo debe ser nombrada la función¿Cómo debe ser nombrada la función
constructora de una clase?constructora de una clase?
Defina con sus propias palabras lo que esDefina con sus propias palabras lo que es
una propiedad y un método.una propiedad y un método.
¿Cómo se crea una instancia de una¿Cómo se crea una instancia de una
clase en ActionScript?clase en ActionScript?
51. Preguntas de revisiónPreguntas de revisión
¿Con qué instrucción se añaden¿Con qué instrucción se añaden
elementos a la lista de visualización?elementos a la lista de visualización?
¿Con qué instrucción se generan número¿Con qué instrucción se generan número
aleatorios en ActionScript?aleatorios en ActionScript?