You are on page 1of 44

INTRODUCCION

Se siente como hace siglos desde que comenz el viaje de escribir este libro. En su primer ao, ms de 4500 copias se vendieron, y su recepcin super mis expectativas. Estoy agradecido a todos los que lo compran y tambin a los que se tomaron el tiempo para difundir el mensaje a otras personas. Dado que la tecnologa se desarrolla a un ritmo tan implacable, sin embargo, el trabajo de un buen autor nunca es terminada. En esta edicin revisada del libro, usted encontrar la mayor parte del mismo material de la original (aunque algunos de ellos ha encontrado un lugar en lnea perma-nente), as como lo que espero es cobertura nueva y emocionante-tura de ms temas avanzados como el desarrollo para dispositivos mviles. El desarrollo del juego es un extrao hbrido de muchas habilidades y estilos de fusin. Se puede argumentar que los juegos son la forma ms complicada de entretenimiento para crear. No slo requieren un diseo slido de codificacin, atractivo, y el sonido decisiones interfaz de usuario, sino tambin los mejores juegos de todos comparten un aspecto particular: son divertidos para jugar. Este "factor diversin" puede ser especialmente difcil porque es muy subjetivo. Diferentes gneros de juegos de apelar a diferentes personas en diferentes mbitos de la vida. Muy pocos juegos, en su caso, van a apelar a todo el mundo, en todas partes, todo el tiempo. Dicho esto, el tipo ms popular de juego para los jugadores en Internet son los que han sido denominados "casuales" de juegos. Si no est familiarizado con esta frase, los juegos casuales tienen el propsito de atraer a una amplia audiencia y el enfoque en la simplicidad y accesibilidad sobre la profundidad y el realismo. Esto no quiere decir que algunos juegos casuales no son profundos y realistas, pero el pblico de una simulacin tctica complicada en una consola es muy diferente de alguien matando a 10 minutos a la hora del almuerzo en su trabajo. juegos casual puede caer en cualquier nmero de gneros, desde juegos clsicos de estilo arcade como Pac-Man a los juegos de puzzle y lgica como el Tetris. De hecho, tanto de los ttulos que acabo de mencionar tienen una cosa en comn: ambos son productos de una era en el desarrollo de juegos (a partir de la dcada de 1970 hasta mediados del decenio de 1980), cuando el enfoque no era el espectculo y grficos de calidad cinematogrfica y de audio, sino en la creacin de juegos que son divertidos en primer lugar para jugar.

JUEGOS EN FLASH
Porque has elegido este libro, supongo que usted no est slo interesado en crear un juego, pero que desea construir en Flash. Flash es una excelente plataforma para los juegos en desarrollo, especial-mente los juegos casuales para la Web. El tamao del archivo y el poder del plug-in, en combinacin con el 98% de instalar la base de todo el mundo, lo convierten en una opcin inteligente para conseguir los juegos vistos por la mayor audiencia posible. Histricamente, algunos juegos en Flash se han considerado como glitchy, carente de esmalte, y en general de gama baja. Eso est cambiando rpidamente, sin embargo, como los juegos flash son cada vez ms sofisticados y acercarse a los juegos "tradicionales" de computadora y video.

CUAL VERSION DE FLASH USAR


Siento que tambin debera tener un momento para hablar acerca de las versiones de Flash. La primera edicin de este libro fue diseado para su uso con Flash CS4. En ese

momento, Flash CS4 haba estado fuera por casi un ao, y que tena sentido para hacer que la versin de su eleccin. En la primavera de 2010, Adobe lanz Flash CS5, que este libro utiliza principalmente como la herramienta por defecto. Todos los ejemplos, excepto los dos juegos para mviles al final se puede abrir en CS5 y no necesitan nada ms (e incluso las que tcnicamente puede-ms en un momento en que). A lo largo de la escritura de este libro, tambin he estado en la beta para CS5.5, debido a ser puesto en libertad por el tiempo este libro aparece en las tiendas. Debido a esto, sent que sera negligente de mi parte no incluye alguna mencin de las caractersticas especficas en CS5.5. Para el resto de este libro, voy a llamar a reas especficas, donde CS5.5 nuevos flujos de trabajo ha introducido u opciones que le har la vida ms fcil. Adems, CS5.5 limpia varias de las opciones de flujo de trabajo descuidado para Android y el desarrollo IOS que existe en CS5, por lo que se muestran imgenes de CS5.5 porque va a ser el modelo en el futuro. Los ejemplos en los captulos 15 y 16 pueden ser tanto tcnica creada con CS5 (con algunas adicionales hacia abajo las cargas desde el sitio Web de Adobe), pero el rendimiento, opciones y facilidad de hacer uso de las herramientas en CS5.5 un tanto mejor eleccin.

Cmo sacar el mximo provecho de este libro


Este libro adems implica o bien que tiene al menos intermediarios-comi experiencia con Flash (CS5, 5.5, o una versin anterior) como un ani-macin o una herramienta de creacin de sitios Web, o que usted est entrando en Flash con la experiencia de desarrollo de juegos en otro plataforma. El propsito de este libro no es ensear el uso bsico del entorno de Flash desde el principio-que se ha hecho muchas veces por otros autores expertos e instructores. Ms bien, espero que para cuando termine de leer este libro, usted se sentir totalmente cmodo hacer frente a un juego en Flash. La primera parte de este libro se discuten muchas de las terminologas y conceptos bsicos que necesita para entender sobre el juego de desarrollo, as como la forma de un mapa de un juego de principio a fin en una sola pgina. En la segunda parte, vamos a discutir la gestin de activos de audio y vdeo en Flash, la lgica del juego (incluyendo la diseccin de un guin de juego completo en sus componentes bsicos), y las formas de su arquitecto juegos para ahorrarle dolores de cabeza ms adelante. Voy a compartir lo mejor algunas prc-ticas para el cdigo y la organizacin de la biblioteca. Un problema en Flash por lo general puede ser diseccionada de muchas maneras, y los juegos no son una excepcin. A veces, las fuerzas externas (cli-padres, plazos, etc) dictar un enfoque sobre otro. La tercera parte tendr lo que ha aprendido de la primera mitad del libro y aplicarlo en una serie de escenarios del mundo real, que muestra cmo no tienen que sacrificar los ideales de sonido del juego de desarrollo slo porque su lnea de tiempo se reducir a la mitad. Por ltimo, en esta nueva edicin, veremos Flash en un conjunto mvil-ting y cmo optimizar para ese medio. Los ejemplos que se dis-discutir tanto el empaquetador para el iPhone, as como el despliegue de juegos en AIR para Android.

Recursos en el Sitio Web


En el sitio Web de compaa de este libro, www.flashgamebook.com, usted encontrar un grupo de recursos para ayudarle, tanto en el seguimiento de los ejemplos ms adelante en el libro y en la creacin de su propio trabajo original. Todo el cdigo fuente de los ejemplos que comparto no est disponible, as como varios captulos de la primera edicin

que se han "retirado" de la pgina impresa. El sitio tambin proporciona una forma de lectores como usted para hacer preguntas y recibir actualizaciones y aclara-ciones en que sea necesario. Asegrese de que echa un vistazo a medida que lee y despus de terminar de leer el libro.

CAPITULO 1
Un Poco De Cimentacin
Antes de llegar demasiado lejos en Flash, es importante sentar las bases para el desarrollo del juego, por lo que entender la terminologa que se usar durante el resto del libro. Refirase a este captulo, cuando se le olvida lo que un trmino medio o la forma en que se aplica en una situacin particular. Si usted comienza a sentirse un poco abrumado por todas las palabras y conceptos abstractos, no se preocupe! El desarrollo del juego (en particular, eficiente, bien ejecutado de desarrollo) es complicado, y no hay nada malo en admitirlo. Recuerden que toda persona que ha programado un partido ha sufrido las mismas angustias y dudas. Como todo en la vida, se requiere prctica y experiencia del mundo real para alcanzar la competencia en el desarrollo del juego. As que coge una taza de su bebida favorita cafena infusa, y vamos a empezar! Los tipos ms comunes del juego Hay muchos tipos diferentes de juegos (y algunos juegos que se enorgullecen de no poder clasificar fcilmente), pero la mayora se pueden clasificar en uno de los siguientes gneros. Aventura Los juegos de aventura al estilo tpicamente historia impulsada y tener uno o ms personajes centrales. Estos juegos son percibidas como las pelculas ms (algunos han sido conocidos por tener el presupuesto de produccin de uno) y se basan en gran medida en el dilogo, la exploracin y la lgica pro-blema solucin para mover el jugador a travs de la narracin. Los juegos de aventura eran especialmente populares durante la dcada de 1980 y principios de 1990, con LucasArts y Sierra producir algunos de los mejores ejemplos del gnero. Este tipo de juego ha tenido un resurgimiento de la clase en Flash debido a su lnea de produccin de arte basada en los requisitos del sistema y generalmente ms bajos.

CapturetheCubeGame.MountainDewFigure1.1

Accin Esta categora abarca un gran nmero de perspectivas de juego-tivos y subgneros, pero por lo general los juegos de accin consisten en pruebas de destreza de los jugadores, tiempo de reaccin y rpida wittedness bajo presin. Tiradores en primera persona, laterales y de los juegos de desplazamiento vertical, y los juegos de lucha toda la cada en el gnero de accin. Flash se presta muy bien a algunos de los subgneros de esta categora, en particular los juegos de accin estilo retro, como el Space Invaders o Super Mario Brothers. Puzzle Piense Tetris, Bejeweled, Sudoku, y la lista contina. Los juegos que implican la lgica, resolucin de problemas, coincidencia de patrones, o la totalidad de la cada anterior en este tipo de juego. Flash prospera en este gnero durante un par de razones. En primer lugar, por lo general hay una menor cantidad de arte necesarios para un juego de rompecabezas simple, es decir, los desarrolladores individuales a menudo se puede hacer ellos mismos. En segundo lugar, la audiencia principal de juegos casuales en la Web tiende a ser mayor y apreciar el ritmo generalmente lento de los juegos de puzzle. Juegos de palabras Esta categora podra ser considerado un subgnero del rompecabezas, pero el enfoque a la construccin de ellos puede ser bastante diferente que pens que mereca su propio espacio. Bsquedas por palabras, crucigramas, juegos de ortografa, y anagramas todos pertenecen a este gnero. Flash es un medio popular para juegos de este tipo, por las mismas razones, es para los juegos de rompecabezas y otros.

Figure1.2 Reserved.www.blockdot.com.Blockdot,Inc.AllRights2009,Raidiux

Figure1.3 Reserved.www.blockdot.com.Blockdot,Inc.AllRights2009,JinkyPOP

Figure1.4 blockdot.com.Inc.AllRightsReserved. www.2009, Blockdot, and Ogre The Maiden ,Monk,

Estrategia y Simulacin Estoy engaando un poco a la combinacin de estos dos gneros en una sola, pero comparten una serie de rasgos comunes. Una planificacin cuidadosa, la gestin de recursos y toma de decisiones, tales como la planificacin urbana o la creacin de un gran ejrcito, caracterizan los juegos de estrategia. El nivel de las minucias se espera que el jugador a mantener por lo general define una estrate-gia o juego de simulacin. Algunos juegos son tan complejos como para permitir que todas las opciones posibles a disposicin del jugador para ser microgestin. Juegos de estrategia ms casuales, como la mayora creados en Flash, simplificar el juego, reduciendo el nmero de opciones disponibles y se centra en un par de las principales tareas. Un ejemplo muy conocido del subgnero estrategia de juegos casual es la torre de defensa, donde el jugador debe dejar de enemigos de conseguir ms all de sus defensas con una variedad de diferentes armas colocadas estratgicamente. Juego de rol (RPG) Juegos de rol son similares a los juegos de aventura, pero normalmente se define ms por el crecimiento de la protagonista a lo largo de la historia del juego. Tradicionalmente, los juegos de rol tienen lugar en un escenario de fantasa y se centran en la elaboracin

de estadsticas del jugador, tales como la mejora de los rasgos tales como fuerza, inteligencia, agilidad. La reciente encarnacin ms popular de estos juegos ha sido en los juegos de rol en lnea masivamente mul-tiplayer (MMORPG), donde los jugadores compiten contra y colaborar entre s para desarrollar sus personajes. Debido a los aspectos sociales y basados en Internet, algunos MMORPGs Flash han comenzado a surgir. Sin embargo, estos juegos suelen ser costosos y tienen largos ciclos de desarrollo, lo que las empresas ms arriesgadas para las empresas y factible para desarrolladores individuales. Vehculo Juegos Estos juegos son bastante explica por s mismo, sino que giran en torno a la operacin de un vehculo en tierra, en agua, en el aire, o en el espacio. Tradicionalmente, estos juegos se juegan a partir de una primera o en tercera persona perspectiva de alcanzar un sentido de realismo. Debido a los requisitos del sistema y la complejidad de la construccin de un entorno completamente en 3D en Flash, la mayora de juegos casuales en esta funcin de gnero a fin de juego en dos dimensiones. Junta / juegos de cartas Por lo general, una encarnacin digital de un juego en el mundo real, esta categora puede consistir en juegos como el ajedrez, damas, blackjack y pker. Debido a los requisitos del sistema de baja, Flash es una gran plataforma para la creacin de la mayora de tablero y juegos de cartas, como lo demuestra el gran nmero de sitios de juegos de casino en la Web.

Condiciones generales para el Desarrollo


La informtica no es un campo difcil de estudiar y definitivamente para todo el mundo que simplemente quiere hacer juegos. Sin embargo, un conocimiento funda-mental de algunos de los conceptos bsicos de programacin ayuda ms tarde, cuando estamos diseccionando una pieza del juego por pieza. S, es seco y tedioso en ocasiones suenan, pero prometo que cosas divertidas que seguir!

Figure1.5 Reserved.www.blockdot.com.Blockdot,Inc.AllRights2009,TikiFreecell

Pseudocdigo Pseudocdigo no es ms que una explicacin en lenguaje estndar de una serie de medidas programticas, que es como un resumen de su lgica. A lo largo de algunos de los ejemplos de este libro, usted encontrar que a veces rompen la lgica en un juego en pseudocdigo antes de escribir cualquier real de ActionScript. Es fcil conseguir cogido tambin en la sintaxis de la programacin y pasar por alto una falla en la lgica, por lo que casi siempre es ms fcil de descomponer un problema en Ingls antes de abordar como cdigo real. A menudo mi pseudocdigo se convertir en la base de los nombres de mis funciones y propiedades. Algoritmo Un algoritmo no es ms que una serie de instrucciones y las decisiones que definen la solucin a un problema. No son cdigo o lenguaje especfico, y por lo tanto tienen sentido en la llanura Ingls. Por ejemplo, un algoritmo puede ser tan sencillo como el proceso que tiene lugar cuando un programa ordena una lista de palabras por su longitud. Esto es lo que podra parecer en pseudocdigo:

for all in wordlist ! sort by length sort by length (word A, word B) ! ! ! ! if A.length > B.length ! return B else ! return A

Procedimiento de programacin Muchos lenguajes de programacin anteriores, tales como BASIC o Pascal, fueron lo que se conoce como lenguas de procedimiento. Usted puede pensar en ellos de manera abstracta como la programacin de una lista de tareas o subprogramas. Se pueden realizar en cualquier orden, pero todos los comandos se dri-ven por un controlador de lgica principal, a veces referido como el "bucle principal." Los ejemplos de este libro ser una combinacin de tcnicas de programacin de procedimiento y de la clase siguiente, programacin orientada a objetos. Programacin orientada a objetos (POO) A diferencia de la programacin de procedimiento, donde la atencin se centra en un conjunto de tareas a ejecutar, programacin orientada a objetos se centra en el concepto de "objetos" que interactan entre s. Programacin orientada a objetos puede ser un tema muy complicado de entender plenamente, pero basta con decir que cada objeto es una entidad auto-contenida que tiene la denicin de propiedades, puede enviar y recibir mensajes de otros objetos, y puede procesar su propia lgica interna. Por ejemplo, en programacin orientada a objetos, una persona sera un objeto y su otro amigo. Las personas que comparten algunos componentes, tanto a las personas ser, pero tambin se

han carac-tersticas nicas a s mismos. Se comunican entre s a travs de mensajes en un lenguaje comn. Algunos de los aspectos de ActionScript trabajar de una manera orientada a objetos, y voy a cubrir los de longitud ms adelante en este libro. Patrones de diseo Mucho se habla estos das en relacin con los patrones de diseo en ingeniera de software. Hay muchas explicaciones largas, con libros enteros dedicados al tema en abstracto. A los efectos de este libro, pensar en un modelo de diseo como la plantilla para el cdigo. Es el modelo por el cual se puede estructurar un juego a medida que se programa, en particular desde un enfoque orientado a objetos. Hay muchos aceptaron los patrones de diseo en la industria, algunos de los cuales funcionan bien para el desarrollo de juegos Flash, y otros que realmente no tienen un lugar aqu. En el captulo 5, voy a hablar de los modelos ms ecaces que he encontrado al trabajar en Flash y cmo ponerlas en prctica. Clases En programacin orientada a objetos, las clases son piezas de cdigo que actan como bloques de construccin de objetos. Usted puede pensar en ellos como plantillas de la que todos los objetos utilizados en una aplicacin se derivan. Una clase dene todas las propiedades y funciones (conocidos como mtodos) de un objeto. Utilizacin de las clases en Flash es importante por varias razones. En primer lugar, la denicin de su cdigo en las clases requiere que usted coloque una planicacin ms en cmo estructurar su juego. Esta es una buena cosa, no tiene planos claramente denidos lleva a adivinar y la duplicacin del trabajo ms tarde. Si un carpintero fue a construir una casa sin planos del arquitecto que no sea un solo dibujo, que bien podra dejar de fumar o tener que improvisar continuamente a lo largo del camino. El resultado sera una casa muy inconsistente, posiblemente inhabitable. Voy a cubrir la estructura de clases extensamente ms adelante, ya que la mayora o la totalidad de nuestro desarrollo se centrar en su uso. Mientras tanto, aqu es un ejemplo de una clase simple denicin de un jugador en un juego.

package { ! ! import flash.display.MovieClip; ! public class Player extends MovieClip { ! ! ! ! ! ! ! } ! ! ! ! ! ! } public const jumpHeight:Number=10;//pixels public const speed:Number=15;//pixels per second public var health:Number=100;//percent public var ammo:int=20;//units public function Player() {//initialization }

No todos los cdigos puede tener sentido en este momento, pero espero que se puede ver que acabamos de definir un personaje jugador con una altura de salto predecesor-y una multa de velocidad de movimiento, y las variables de la cantidad de municin y de salud que tiene. Por supuesto, esto poco de cdigo por s sola no har nada, pero crea una base sobre la cual construir una mayor funcionalidad y caractersticas.

Public, Protected, Private, and Internal


Los cuatro prefijos que usted puede dar a las propiedades y funciones dentro de sus clases, tambin conocido como atributos, definir qu artculos estn disponibles de una clase a otra. Todos ellos estn documentados en los archivos de ayuda de Flash, pero aqu est un breve resumen: Los mtodos pblicos (public) y las variables son accesibles desde cualquier lugar y son la base de cmo las clases interactan entre s, cuando una clase se extiende a otro, todos los mtodos pblicos y las variables se heredan. Los mtodos protegidas(protected) y las variables son accesibles slo desde el interior de su clase y se hereda. Los mtodos y variables privadas slo son accesibles desde el interior de su clase y no son heredados. Los mtodos de Interior y las variables son accesibles desde todas las clases dentro de su paquete. No es un atributo de otro, conocido como esttica, que puede trabajar con cualquiera de las otras cuatro mencionadas anteriormente. Cuando un mtodo o variable es esttica, slo hay una copia de ese tema jams se haya creado y se accede a travs de la clase no directamente, los objetos creados a partir de la clase. En otras palabras, una propiedad esttica denominada "versin" del juego de clase se puede acceder como Game.version. Si ha intentado acceder a l desde una instancia de la clase de juego, sera un error. Condiciones especficas para el Desarrollo de Juegos Ahora, pasamos a un desarrollo ms interesante de terminologa. Esta seccin cubre los conceptos que vamos a aplicar directamente como crear juegos en los prximos captulos. Artificial Intelligence (AI) AI se refiere genricamente a un conjunto de decisiones lgicas que un programa puede hacer para imitar la toma de decisiones humanas. Amnista Internacional puede ser muy simple (como tener el equipo mover la barra hacia la pelota en un juego de Pong) o extremadamente complejos (como tener enemigos de pato para la cubierta, entender cuando estn en peligro, y reaccionar en consecuencia en Halo 2). Para nuestros propsitos en este libro, y ya que Flash no sera capaz de manejarlo de otra manera, la mayor parte de la IA se desarrolla ser relativamente sencillo. Game Loop (or Main Loop) Este trmino se refiere generalmente al segmento principal de cdigo que determina el prximo curso de accin para un juego basado en la informacin, Amnista Internacional, o alguna lgica arbitraria. Por lo general, no es ms que las llamadas a funciones de otras

piezas de la lgica y la comprobacin para ver si ciertas condiciones se han cumplido (por ejemplo, si un jugador ha ganado). Aqu est un ejemplo de pseudocdigo que describe un simple bucle principal de un juego:

on ! ! ! !

enter frame ! move player ! move enemies ! check for collisions ! check for win or lose

En lenguajes como C, un bucle principal es, literalmente, un bucle de cdigo (como un "tiempo" o "para" circular) que se ejecuta hasta que se cumple una condicin. En algunos casos, esto tambin se conoce como la mquina del Estado, ya que es la lgica que determina el "estado" del juego se encuentra, antes del partido, dentro del juego, despus del partido, etc, y realiza las funciones correspondientes. En ActionScript, se debe establecer de manera diferente debido a un bucle ordinario bloquear el reproductor Flash de espera para el juego hasta el final. Debido a su herencia de animacin, Flash trabaja en el contexto de marcos, como una pelcula. Tiene una velocidad de fotogramas, es decir, el nmero de fotogramas por segundo que puede ser definido. Cuando una trama pasa, Flash actualiza la pantalla, por lo que es el momento perfecto para realizar la lgica. Esto puede parecer extrao a los desarrolladores utilizar para otros idiomas, pero rpidamente se convierte en segunda naturaleza. Voy a hablar de los lazos juego ms adelante, ya que sern la fuerza impulsora detrs de nuestro cdigo del juego. En el captulo 16, tambin trataremos el uso explcito de una mquina de estados finitos (uno con un nmero finito de estados predefinidos). Juego Vista (Game View) Un juego puede tener lugar de cualquier nmero de puntos de vista-a menudo el gnero de un juego que define el fin de usar, pero no necesariamente. Muchos juegos de accin moderna son de primera o de puntos de vista en tercera persona, en los que usted ve el mundo del juego desde la perspectiva de tu personaje o justo detrs de ellos. Una accin ms casual y juegos de aventura utilizan puntos de vista desde el lado. Otros gneros como la estrategia o las carreras pueden ver la accin desde arriba. Parte de lo que hace que un juego atractivo y divertido de jugar es la vista que elija a emplear. Un juego de accin con mucho movimiento rpido y obstculos sera difcil y sin brillo de una vista a vuelo de pjaro, pero desde una vista en primera persona, tiene una inmediatez e intensidad que suspende el jugador disbe-creencia. Algunos puntos de vista del juego en Flash funcione mejor que en otros. La mayora de las opiniones participacin de un entorno de tres dimensiones no va a funcionar bien dado Flash limitaciones de rendimiento tecnolgico, pero hay trucos y tcnicas que hablaremos ms adelante que puede ser utilizado para "simular" en 3D de una manera convincente. Desplazamiento (scrolling) A menudo, el medio ambiente de un juego se extiende ms all de su rea visible. Por ejemplo, en Super Mario Brothers, el mundo del juego se extiende durante cierta distancia, pero slo una pequea parte se puede ver a la vez. Debido a esto, el juego se

desplaza horizontalmente hacia atrs y adelante con el jugador mantiene en el rea de visualizacin principal. Este mismo efecto se puede utilizar tanto horizontal como verticalmente para los juegos de conduccin, juegos de estrategia, etc Una tcnica para dar un entorno de juego de desplazamiento ms profundidad y aspecto tridimensional es tener varias capas del medio ambiente desplazarse a diferentes velocidades. Esta tcnica se conoce como paralaje desplazamiento. Al igual que en el mundo real, los objetos que parecen estar en la distancia, tales como montaas o edificios, puede desplazarse a una velocidad ms lenta que los objetos en primer plano. Vamos a discutir un ejemplo de la animacin de desplazamiento lateral en el captulo 7. Juegos de piezas basada en Algunos entornos de juego puede ser dividido en una cuadrcula, como un laberinto o juego de estrategia. La obra de arte para el juego se puede cre-serie ATED como los azulejos de un tamao predeterminado. Aunque se requiere ms trabajo en el extremo de programacin para desarrollar un sistema eficiente de asignacin de tejas, se abre a los juegos a la creacin de un editor de niveles para que los usuarios finales crear mapas personalizados. Starcraft y Warcraft son dos juegos de estrategia que disponen de muy bien implementado sistemas de revestimiento con los editores. Veremos un motor de juego de fichas basado en el Captulo 14. Flash Trminos de Desarrollo (Flash Development Terms) Antes de terminar este captulo, he aqu un puado de trminos que voy a continuar conpara referirse a todo el libro. Entender la forma en cada una de estas obras los artculos sern clave para arquitectura de cdigo del juego de sonido en el camino. En el captulo 4, vamos a profundizar en estos conceptos an ms en profundidad, pero esto servir como un resumen rpido. STAGE En Flash, el escenario es el rea de contenido principal en la que todo est construido. Todos los objetos visuales otros se colocan en la parte superior del escenario una vez que se han aadido a la misma. Piense en ello como la lona de su juego. DISPLAY OBJECTS Un objeto de visualizacin es cualquier objeto que tiene una representacin visual y se puede colocar en el escenario. Hay muchos tipos diferentes de objetos de visualizacin en Flash, los ms familiares a los desarrolladores con experiencia se botones, sprites y MovieClips. Incluso el propio escenario es un tipo especial de objeto de visualizacin. Los objetos de visualizacin todos comparten algunos rasgos comunes: todos ellos tienen una x, y y z posiciones en la pantalla, as como las propiedades de escala y rotacin. Flash mantiene listas de todos los objetos de visualizacin en la pantalla en un momento dado, lo que facilita su acceso y manipular. EVENTS AND LISTENERS Los eventos son el medio principal de comunicacin entre objetos en AS3. Son simplemente mensajes que los objetos en Flash puede transmitir o enviar. Cualquier objeto que se ha creado para escuchar las recibe eventos. Pueden ser las notificaciones de entrada del usuario, informacin sobre los datos externos que se carga, etc Flash incorpora mltiples en eventos

para las tareas comunes, y es perfectamente posible (y recomendable) crear otros nuevos para los objetos personalizados, como los juegos. Los eventos pueden llevar consigo cualquier cantidad de datos pertinentes a su tipo, pero todas ellas contienen propiedades bsicas: Un nombre o tipo Un target: el objeto que distribuy el evento Un current target: El objeto que se est escuchando y/o manipulando el evento Los eventos son una herramienta muy poderosa que vamos a hacer un uso extensivo de los captulos ms tarde.

Packages

Un paquete es una coleccin de clases y funciones, que se utiliza para fines de organizacin. Debido a que hay diferentes clases de tantos construido en Flash, por no mencionar todas las clases vamos a crear, es importante mantenerlos agrupados en colecciones lgicas. Por ejemplo, las clases en Flash que tienen que ver directamente con los objetos de visualizacin en un paquete llamado flash.display. La mayora de eventos se encuentran en el paquete flash.events. La convencin de nomenclatura estndar para un paquete todo en minsculas. Para utilizar las clases de un paquete en particular, se utiliza el comando de importacin para acceder a ellos:

package mypackage ! ! { ! ! ! import flash.display.MovieClip; ! ! ! public class MyClass() extends MovieClip ! ! ! { ! ! ! } }


Author Time, Compile Time, and Runtime

Estos trminos se refieren a las diferentes etapas cuando los datos en Flash ha sido alterado o verificado. A lo largo del libro, voy a hacer referencia a cosas que suceden en el entorno de autora de Flash, se trata de acontecimientos del tiempo del autor. Eventos o errores que se producen durante el proceso en el que Flash crea un archivo SWF que se conoce como eventos en tiempo de compilacin. Por ltimo, los eventos en tiempo de ejecucin se producen una vez que un archivo SWF se ejecuta por s mismo.

You Can Wake Up Now


Menos mal. Usted lo hizo! A pesar de que no puedan comprender plenamente los conceptos que he presentado aqu, usted comenzar a ver en el contexto de los captulos ms tarde y van a empezar a hacer clic. Basta pensar, ahora puedes colocar palabras como "polimorsmo" en una conversacin informal y el sonido como un hecho y derecho ingeniero nerd, eh ... software!

CAPITULO 2

THE BEST TOOL FOR THE JOB


Flash Back
Adobe (anteriormente Macromedia originalmente FutureSplash) Flash ha existido por mucho tiempo y ha recorrido un largo camino desde sus humildes orgenes. A partir de Flash 4, los desarrolladores se les dio un impresionante (en el momento) conjunto de herramientas de scripting de lo que haba sido principalmente una herramienta de animacin ligero. Los primeros juegos comenzaron a aparecer en Flash 4 y continu en Flash 7 con la introduccin de la versin de ActionScript 2. Los desarrolladores de Flash pueden ahora el programa de una manera bastante orientado a objetos, aunque con algunas concesiones y caprichos.

Figure2.1 Flash5.previous versions, all the way Flash logos from back to Un avance rpido hasta el ltimo lanzamiento, CS5.5 Flash. Desde la versin CS3, los usuarios de Flash han tenido acceso a una versin nueva y poderosa del lenguaje: ActionScript 3 (AS3). Rediseado desde los cimientos, AS3 mucho ms sigue de cerca las normas y directrices de lenguajes de programacin modernos (como Java o C #), con una hoja de ruta bien definida para una nueva funcionalidad en las versiones posteriores. Flash CS4 presenta caractersticas an ms sorprendentes para explotar juegos, tales como transformaciones bsicas en 3D, cinemtica inversa (para la manipulacin de carcter realista), y un conjunto de herramientas de animacin totalmente nuevo. En Flash CS5, Adobe entrega la posibilidad de implementarla en las plataformas mviles, un buen nuevo formato de archivo de control de versiones de usar, y una serie de mejoras de flujo de trabajo agradable para el IDE. CS5.5 ha seguido estas mejoras y fija una serie de problemas de estabilidad y flujo de trabajo con CS5. Dado que Flash CS5/5.5 es nuestro entorno de desarrollo de la eleccin, AS3 es lo que vamos a cubrir en este libro. Si usted todava est haciendo la transicin de AS2 a AS3, o an no han comenzado, no se desalienta edad. Cuando un convenio de programacin o la tcnica ha cambiado significativamente desde AS2, lo voy a sealar a un lado. AS3 puede tomar algn tiempo para acostumbrarse, como algunos de su sintaxis ha cambiado drsticamente a travs de AS2. Sin embargo, en poco tiempo, los cambios que se convertir en segunda naturaleza y usted se preguntar cmo ha podido prescindir de algunas de las mejores caractersticas de AS3. Si ya tienes experiencia en el desarrollo AS3, que est un paso por delante y debe sentirse como en casa en la lengua. Y fuera de si viene de un desarrollo del juego de fondo de Flash, encontrars algunas cosas familiares y algunas cosas muy diferentes de lo que estamos acostumbrados.

The Case for Flash


Lo primero que debe saber acerca de Flash es que nunca fue diseado para desarrollar juegos. Hay una serie de caractersticas ausentes que hasta el da de hoy frustrar incluso un fan de Flash, como yo. Yo an voy a esbozar estas huelgas en contra de ella en breve, pero primero vamos a ver lo que Flash ha estado haciendo.

Player Penetration

Aproximadamente el 98% de los usuarios de Internet tienen alguna versin de Flash Player, y por lo general dentro de un ao de una nueva versin de su liberacin, algo ms del 80% han mejorado. El tamao de la audiencia de acceso a los desarrolladores de Flash no tiene precedentes en la industria de los videojuegos. Debido a que est disponible en equipos que ejecutan Windows, Mac OS o Linux, tambin puentes entre las diferencias de todas las plataformas de los principales consumidores. La mayora de los diseadores de juegos y pers desa-que producen gran presupuesto, los ttulos de minoristas tienen que conformarse con un mucho menor demogrfica y tienen que tomar la decisin consciente (y con frecuencia costosos) para incluir otras plataformas de su objetivo principal. Esta ubicuidad se est propagando rpidamente a otros dispositivos, adems de computadoras de escritorio, telfonos y las tabletas de todas las formas y los tamaos estn adoptando rpidamente varias versiones de Flash para mejorar la experiencia del usuario.

Flexibility

Flash es capaz de muchas cosas a la vez. Puede crear dibujos animados, efectos de postproduccin, presentaciones, publicidad de banner-mentos, todo tipo de sitios Web, Web y aplicaciones de escritorio basadas en, y, por supuesto, juegos. Los desarrolladores utilizan Flash para todas y cada una de estas funciones, y algunos slo pueden estar familiarizados con la tarea que uno ha aprendido a hacer. Debido a que es un entorno muy visual, Flash es mucho ms accesible a los novatos que la mayora de los paquetes de desarrollo. Por desgracia, esta inmensa flexibilidad tiene un precio. Al no estar diseados especficamente para hacer cualquier cosa, Flash tiende a adoptar un planteamiento muy genrico a su conjunto de herramientas e incluye una funcionalidad que es til para una serie de aplicaciones, no slo un lugar. Puede crear herramientas adicionales, los guiones, los flujos de trabajo, etc, que le ayudar en su tarea especfica, pero que todo depende de tu ingenio individual. Voy a cubrir algunas de estas adiciones en un captulo posterior.

Speed to Market

Flash hace que muchas tareas, que requieren una gran cantidad de cdigo en otros idiomas, mucho ms fcil. Tareas, tales como animacin simple, reproduccin bsica de vdeo y audio, son muy simplificado en Flash y permiten a los desarrolladores a llevar sus productos al mercado mucho ms rpido que otras soluciones, con el poder sin duda ms. Por ejemplo, debido a su herencia de animacin, Flash hace que sea muy fcil de mostrar imgenes en la pantalla. Esto puede parecer una afirmacin obvia, pero en comparacin con otros entornos de desarrollo, esta es una gran ventaja. C + +, Java, y todo lo que hacen otros idiomas a la pantalla de programacin, por lo que dibujar un simple rectngulo en la pantalla requiere de muchas lneas, muchos de valor de cdigo. Todo lo que toma en Flash es la seleccin de la herramienta de rectngulo y colocar una en el escenario, o escribir unas pocas lneas de cdigo ActionScript. Flash se encarga de hacer todo "bajo el cap", por lo que el desarrollador no tiene que preocuparse por ello. Bueno, no mucho de todos modos.

It Looks Good

Aunque estoy seguro que todos hemos visto nuestra parte de contenido de Flash de aspecto horrible en los ltimos aos, algunos de los mejores de futuro y trabajar visualmente ms eficaz que he visto en la Web fue creado en Flash. Debido a que Adobe es una empresa de diseo centrado, que estn igualmente preocupados con las herramientas que permiten que su trabajo se vea bien ya que son las herramientas que la hacen funcionar bien. Esto tiene una tendencia a frustrar los diseadores y

desarrolladores de los extremos de ncleo duro del espectro, pero es precisamente esta unin de la tecnologa y el diseo que hace que Flash nica.

Nobodys Perfect
Para todos los que Flash ha estado haciendo, no es ciertamente libre de problemas a la hora de producir juegos. No me malinterpreten, el punto de la enumeracin de estas fallas es por lo que el desarrollador se dar cuenta de ellos, no para hacer un caso contra el uso de Flash en el primer lugar. La buena noticia es que la mayora de estos inconvenientes se puede solucionar con las herramientas adecuadas.

Flaw: The Code Editor

Aunque el editor de Flash ActionScript ha ido evolucionando con el resto del paquete en los ltimos aos, an carece de un puado de las caractersticas fundamentales de diversin que me impide todo corazn lo recomiendo como la herramienta de codificacin de la eleccin. La omisin ms agravantes es en realidad una mala aplicacin: sugerencias para el cdigo. Al escribir cdigo, Flash intenta anticipar lo que va a querer con el tipo que viene y le ofrece una lista seleccionable de opciones para tratar de acelerar el proceso. El problema es que slo sugerencias para el cdigo cuando se llega a la final de una palabra, as que si usted comienza a escribir mal una variable o funcin y no recibir una sugerencia para que, usted no tiene ningn indicador de donde sali mal. Con CS5, Adobe ha agregado la capacidad de introspeccin (mirar dentro) de clases personalizadas, pero el editor de cdigo es todava inferior a los dos productos de la competencia.

Solution: Use an Additional Tool

La solucin ms simple (y el que yo uso) a este dilema es utilizar una aplicacin adicional para manejar todas sus ActionScript y el uso de Flash para todo lo dems. Los dos mejores opciones que hay a partir de esta escritura son FlashDevelop, un editor gratuito de cdigo abierto de cdigo, y Flash Builder (antes de Flex Builder), aplicaciones de codificacin de Adobe-cin basado en Eclipse (otro editor de cdigo abierto). Si ests en un presupuesto ajustado o no intencin de utilizar el marco de trabajo Flex de Create contenido de Flash, FlashDevelop es una gran opcin y lo que yo uso sobre una base diaria. Si desea crear contenido en Flex, o si ya posee una copia de Flash Builder, es una solucin igualmente robusta con algunas caractersticas adicionales realmente grande, como "marcadores" de lneas de cdigo que est activamente trabajando. El paso adicional de regresar a CS5 para publicar su SWF palidecen en comparacin con el cdigo sorprendentemente buena herramienta y otros scripts mejorar-mentos que ofrecen estos programas.

Figure2.2 The built-in ActionScript editor in Flash CS5.

Flaw: Performance/Memory Management


Dado que los juegos flash continuar creciendo en tamao y complejidad, requieren ms pesados de hardware para que funcione bien. La mayora de otros entornos modernos de desarrollo incluyen herramientas para la evaluacin comparativa de un juego con-sumo de los recursos del sistema como la potencia de la CPU y la memoria. Flash no tiene todas las caractersticas de este tipo, por lo que es ms difcil de predecir sin pruebas del mundo real que tan bien un juego llevar a cabo en una serie de sistemas o cules son sus requisitos mnimos debe ser.

Solution: Use a Third-Party Solution or Roll Your Own

El Administrador de tareas de Windows y el Monitor de actividad en un Mac son una gran herramienta a nivel de sistema que todo el mundo tiene para el control de la asignacin de memoria y CPU de una aplicacin dada. Desafortunadamente, no hay forma real de obtener el uso de la CPU exacta de un Juego en flash porque la mayora de formas de las pruebas que implican que se ejecuta dentro de otro programa, como Flash CS5 o un navegador Web. Estos programas se pueden ejecutar otras tareas que consumen recursos del sistema, y es difcil saber dnde est el "contenedor " termina y comienza el juego. Dicho esto, a veces un enfoque ms simple a este problema es ms eficaz. Contenido de Flash est configurado para ejecutarse a una velocidad predefinida. Si el jugador se pone demasiado estancado, ya sea con el cdigo o lo que est tratando de hacer a la pantalla, que traer hasta la velocidad de fotogramas. Es muy fcil de usar un pequeo componente en su juego para controlar la velocidad de fotogramas de una mquina en particular est recibiendo. A continuacin, puede utilizar esta informacin durante las pruebas para determinar el nivel mnimo de mquina, necesario para jugar su juego. Basta con establecer un nivel de tolerancia (por lo general superan el 85% de la tasa de fotogramas de un juego diseado es aceptabilidad-ble) y, a continuacin la nota que las mquinas estn por debajo de esta tolerancia. Mem-teora es un poco ms expuestos en Flash, y hay maneras de determinar los puntos de estrangulamiento en su juego en el uso de la memoria va de las manos, aunque s requiere escribir su propia utilidad. Esto se hace utilizando el paquete de muestrarios, y discutiremos la paquete, el componente de velocidad de cuadro, y otras optimizaciones en el captulo 17.

Figure 2.3 The free code editor FlashDevelop.

Figure 2.4 The Activity Monitor on a Mac.

Flaw: Debugging Content


Adobe mejorado en gran medida el depurador de AS2 a AS3, pero todava tiene una serie de defectos cuando se trata de trabajar con proyectos de mayor envergadura. Dado que los proyectos se hacen ms grandes y ms grandes y se basan en archivos externos, se hace difcil para la depuracin de problemas complejos. Usted puede depurar de forma remota contenido que se ejecuta en un navegador, pero no siempre es 100% estable, y cualquier nio que los fondos soberanos no han sido exportados para la depuracin (por ejemplo, archivos que tal vez no estn bajo su control) no tendr la informacin necesaria necesarios para encontrar el problema. He tenido el contenido que funciona bien dentro

de Flash y se deshace una vez que est en un servidor Web, cuyos resultados son una caza de errores en la oscuridad y un montn de rascarse la cabeza. Huelga decir que esto se hace an ms frustrante con los juegos, que depender tanto de los montones y montones de cdigo.

Solution: Use Traces and Custom Tools

La herramienta ms til en la depuracin de contenido de Flash es el comando de seguimiento, sino que ha existido desde Flash 4 y trabaja esencialmente la misma manera que lo hizo hace tantos aos. Todo lo que hace es mostrar toda la informacin que usted le indique en tiempo de ejecucin. Esto se vuelve muy valiosa cuando se trata de ver algo tan complicado como un juego se ejecutan en tiempo real. Usted puede tener Flash trazar secuencias enteras de la lgica para determinar dnde se est produciendo un error, y se puede usar para enviar mensajes a otros desarrolladores que podran estar trabajando con el cdigo. Aunque las huellas de trabajo a travs de la ventana de salida en Flash, es posible capturarlos dentro de Firefox usando una extensin llamada FlashTracer y la versin de depuracin de Flash Player. Enlaces a ambos se pueden encontrar en el sitio Web de este libro. Funciona bien para la depuracin general, pero cuando un juego funciona bien en Firefox, pero no otros navegadores web no ser de ninguna ayuda. Otra opcin es crear herramientas incluso ms robusta que puede usar en cualquier ambiente. Vamos a estudiar la manera de crear y aplicar estas herramientas en el captulo 17.

Flaw: Lack of Built-In Game Libraries and Tools

Hasta este punto, las deficiencias de Flash que he descrito son los que afectan a los desarrolladores de todo tipo de contenido de Flash. Porque los juegos tienden a necesitar ms conjuntos de herramientas especficas y se inclinan hacia el final del desarrollo a medida, Flash no tiene un nmero de bibliotecas de cdigo que estn fcilmente disponibles en otras plataformas. Ejemplos de este tipo de biblioteca puede ser un simulador de fsica para hacer realistas las colisiones fsicas o un administrador de sonido que maneja fcilmente la decoloracin / panormica de efectos de sonido en tiempo real. Estas bibliotecas deben ser escritos desde cero, lo que significa que no se benefician de el aumento de velocidad de ser aplicado directamente en el interior de Flash.

Figure 2.5 The FlashTracer extension running inside Firefox 3.

Solution: Write Your Own/Find Open Source Implementations


Por desgracia, hasta que Adobe aade las bibliotecas de juegos especficos para el reproductor de Flash, nos quedamos ah, construir nuestra propia. Por suerte, muchos desarrolladores de Flash en la comunidad estn trabajando para cualquiera de las bibliotecas del puerto, tales como los de otras lenguas o escritura sobre ellos desde el

principio en ActionScript. Muchos de ellos son proyectos de cdigo abierto que cualquiera puede contribuir y mejorar. Hay enlaces a varios de estos en el sitio Web de este libro, e incluso a explorar una en el captulo 16 para hacer la fsica 2D. Para ser justos con Adobe, hay una serie de nuevas capacidades venir en futuras versiones de Flash Player que ese apoyo caractersticas centradas en el juego como la aceleracin 3D de hardware y las pastillas de control.

Stop Fighting It
los desarrolladores de juegos tradicionales a veces tratan de luchar contra la naturaleza de Flash cuando por primera vez a hacer la transicin, pero a menudo la mejor manera de obtener el resultado deseado de Flash es ser consciente de sus fortalezas. Tomemos, por ejemplo, un personaje en un juego que desea animar en funcin de su estado (en espera, correr, saltar, etc.) Un artista le ha dado secuencias de imgenes de cada uno de estos estados. La ca-rcter de estado puede ser controlado por la entrada del usuario con el ratn o el teclado, o por la IA. Un enfoque tradicional para este problema sera la de escribir un script que actualiza el personaje con la estructura correcta de animacin basada en lo que el juego est diciendo que haga. Sin embargo, esto requiere la secuencia de comandos para saber cuntos animales-maciones hay, cuntos cuadros cada animacin es, y si el bucle de animaciones o slo juego una vez. Tambin hay que aadir la nueva imagen al escenario y luego eliminar el anterior. Adems, implica una sobrecarga de cualquier otro cdigo se ejecuta en el juego, que puede llegar a ser problemtico si usted tiene muchas caractersticas-tros en la pantalla a la vez. Este es un ejemplo perfecto de un mbito en el Flash brilla sobre otras herramientas de desarrollo de juegos. Dado que el entorno est construido en torno al concepto de lneas de tiempo y la animacin, usted tiene una cantidad tremendos de flexibilidad cuando se trata de estados jugador que lo controla, los estados del juego, o cualquier otro objeto en su juego que son ms que una imagen fija. El truco est en saber lo que Flash es mejor y donde tiene que modificar su comportamiento. La otra cara de la moneda, el desarrollo del juego es que los juegos tienen el cdigo: a menudo en grandes cantidades. Un juego totalmente construida en torno al arte de animacin y la fantasa no es susceptible de ser muy interesante o reutilizable en una fecha posterior. Los usuarios que han construido previamente el contenido en Flash con secuencias de comandos muy poco pueden encontrarse en pnico al ver la cantidad de cdigo que encontraremos en captulos posteriores. Esto es normal, toma una respiracin profunda. Desarrollo en Flash siempre ha sido un matrimonio de diferentes disciplinas, y los juegos son posiblemente el mejor ejemplo de esta idea. Cada tarea de Flash ha sido diseado para hacer ms fcil tiene aspectos que se traducen en el desarrollo del juego.

Things Flash Was Built to Do


Animation versus Games
Posiblemente ms fuerte de Flash a cabo el uso de la caja es como una aplicacin de animacin. Al igual que los programas de post-produccin (como Adobe After Effects) o multimedia, herramientas de autor (como Adobe Director), Flash se centra en el concepto de una lnea de tiempo. De forma predeterminada, los eventos ocurren en un orden lineal, y objetos en la lnea de tiempo puede tener lneas de tiempo anidadas dentro de ellos. Esto permite animaciones muy complejo que se construir con relativa rapidez. Pensemos por un momento una animacin de un personaje caminando. Con el fin de parecer convincente, todos los apndices del personaje tendra que ser separados y animacin de forma independiente. Adems, es necesario que se mueven por el escenario para que el personaje no es slo caminar en su lugar. Para mover todas las

piezas a la velocidad adecuada sera muy engorroso y lleva mucho tiempo. En cambio, con lneas de tiempo anidadas, la secuencia de caminar puede ser contenido dentro de un clip que se mueve a un ritmo diferente en el escenario. Aunque este concepto no es nada nuevo para cualquiera que est familiarizado con Flash, que habla de una jerar-qua que ser muy til ms adelante.

Application versus Games

Aunque comenz como una herramienta de animacin, Flash se ha convertido en una serie de otros usos. Desde las ltimas versiones de algunos de Flash, Adobe ha iniciado la comercializacin de la misma (junto con Adobe Flash Builder) para crear lo que se conoce como Rich Internet Applications (RIAs). En resumen, los acuerdos regionales son las aplicaciones que realizan tareas de lo que eran tradicionalmente de escritorio enlazados desde la Web. Pueden ser cualquier cosa desde aplicaciones cesta de la compra de software de facturacin a un widget de pronstico del tiempo. Para proporcionar la flexibilidad y para que el desarrollo rpido de este tipo de software posible, Adobe incluye una serie de componentes, piezas prefabricadas de cdigo diseado para su fcil reutilizacin. Estos componentes son elementos tales como barras de desplazamiento, cuadros de texto, botones de radio, los dispositivos se pueden ver en una pgina tpica web en HTML. Aunque estos componentes son ideales para aplicaciones RIA, sirven poco uso directamente en los juegos (aunque yo te mostrar ms adelante cmo se puede ser muy til en las herramientas que ayuda al desarrollo del juego). Podra decirse que un juego es una aplicacin, ya que realiza ciertas funciones sobre la base de entrada del usuario. Sin embargo, una solicitud en el sentido tradicional se utiliza para crear algo o entregar la informacin; recibe la entrada y le da salida. Las directrices para produ-ciacin una aplicacin como un procesador de texto son muy diferentes de los utilizados para crear un juego. Esto debe ser entendido para no tratar de desarrollar juegos como lo hara con cualquier nmero de otras aplicaciones. Aunque las aplicaciones tienden a ser utilizados para la pro-dad, los juegos son utilizados para el entretenimiento, o en algunos casos, la educacin-cin. Los juegos son la experiencia, sino que establece un tono y crear un ambiente para que el usuario tenga la diversin (o de vez en cuando ensean un concepto o hacer un punto).

Web Sites versus Games

Otra rea en la que Flash ha florecido en el sitio web de desarrollo. He empezado a utilizar en una agencia de publicidad, la creacin de sitios web de marca para los clientes. Flash incluye muchas caractersticas para trabajar en la Web, incluyendo soporte de streaming de los contenidos, la capacidad de carga de datos desde una variedad de fuentes externas, y por supuesto, su reproductor basado en navegador que coloca el contenido de Flash junto con cualquier otra cosa en HTML. Al igual que los juegos, sitios web tienden a basarse en la experiencia, pero tambin son por lo general la intencin de ser informativos. Cuando estn destinados exclusivamente para el entretenimiento, que puede parecerse a un juego en muchos niveles, por debajo de la puntuacin o el resultado basado en la realizacin. De hecho, debido a las similitudes en la forma de cada tipo de contenido se produce, la lnea entre Flash y sitios Web de juegos anidado en su interior se ha vuelto muy borrosa.

Flash versus Traditional Game Development

Trabajar con los desarrolladores de juegos procedentes de un fondo como C o Java ha sido una experiencia muy linda, muchos aspectos del flujo de trabajo de Flash que me dan por hecho son verdaderas piedras de tropiezo a los forasteros. En primer lugar, los

desarrolladores de juegos tradicionales tienden a mantener todo el cdigo de un juego y todos los activos (arte, sonidos, vdeo, etc) separados por completo. El cdigo define lo que los activos se cargan y cmo se utilizan. En Flash, la forma estndar de gestin de activos es para la importacin en un archivo de biblioteca nica. Para utilizar un activo, slo tiene que arrastrarlo al escenario y comenzar a trabajar con l, o le das un nombre que se puede hacer referencia ms adelante en el cdigo. Esta interdependencia de cdigo y de los activos ha sido a menudo de una crtica dirigida contra los desarrolladores de Flash ms tradicionalistas, como el cdigo demasiado atado a los activos especficos, puede resultar duro para su posterior reutilizacin. Aunque hay algo de verdad en esta afirmacin, hay maneras (que vamos a cubrir ms tarde) para utilizar las comodidades de la gestin de activos de Flash con gran parte del cdigo reutilizable.

The Best Tool for the Job


Tal vez una de las mayores fortalezas de Flash es el hecho de que hay formas sin duda tantos para lograr el mismo objetivo nal. Hay procesos denitivamente mejor y peor en el camino, y en los captulos que vienen, voy a esbozar lo que he encontrado que funciona constantemente y lo que debe evitar.

Flash CS5 versus Flash Builder

Adobe Flash Builder es una herramienta para la creacin de contenido de Flash fuera del entorno CS5, basado en un marco predefinido de componentes y diseo de un lenguaje similar al HTML. Se destaca la creacin de aplicaciones RIA con rapidez. Fue concebido para tratar de ganarse a los desarrolladores de Flash desde plataformas como Java o. NET. Flash CS5 se destaca en trminos de grficos de animacin y movimiento capacidades, mientras que Flash Builder brilla como una herramienta de programador. Se trata de un editor de cdigo de circulacin y tiene muchas caractersticas que hacen los programadores tradicionales se sienten como en casa, ya que se basa en el popular IDE de Eclipse. La razn principal por la que opt por cubrir CS5 Flash en lugar de Flash Builder como mi entorno de desarrollo de eleccin es la que me siento Flash es simplemente un medio ambiente mejor para aprovechar al mximo los juegos. No hay un equivalente que se encuentran en Flash Builder para conjunto de herramientas de animacin de Flash, pero Flash puede ser aumentado y se utiliza conjuntamente con otras herramientas como Flash Builder para compensar las deficiencias de su cdigo. La otra razn para usar Flash Builder es el Flex Framework, un conjunto de clases para crear fcilmente y despellejar a RIA utilizando un lenguaje de marcado llamado MXML, y le agrega volumen considerable para sus proyectos que de ninguna manera el desarrollo del juego los beneficios. Vase ms arriba con respecto a los editores de cdigo alternativo para Flash. CAPITULO 3

A PLAN IS WORTH A THOUSAND ASPIRIN


He construido una gran cantidad de juegos en Flash con los aos. Algunos han tenido menos de una semana, y algunos se han extendido durante varios meses. Si tenan grandes presupuestos o prcticamente sin presupuesto para nada, un hilo comn ha vuelto una y otra vez: los proyectos que se planearon bien y define claramente se desarroll sin problemas y los que no se no lo hizo. Planificacin de un juego de fondo puede ser un paso tedioso, pero es mucho ms fcil de cambiar de opinin o predecir

problemas en el papel de lo que est en pleno desarrollo. Cmo es exactamente lo que va sobre la documentacin y delineando su juego es una cuestin de preferencia personal y una medida de cun anal retentiva que est dispuesto a ser. He aqu algunas estrategias que funcionan para m.

Step 1
Ser capaz de describir el juego desde una vista de pjaro en una o dos frases. La mayora de cualquier idea de juego, sin importar su complejidad, se puede resumir de esta manera, aunque deja fuera muchos detalles. Ser capaz de extraer un juego hasta su premisa ms bsica se mantiene en el camino y acta como un "cuadro grande" recordatorio de lo que estamos construyendo. Si usted trabaja en una empresa de construccin de juegos para los clientes, lo ms probable es tratar con la gente de marketing, no los jugadores, sino que tienden a apreciar el grado de concisin. Por ejemplo, un resumen de Pac-Man podra ser el siguiente: Moverse a travs de un laberinto de recoleccin de alimentos y evitar los fantasmas que estn tratando de matarte. Un juego que una vez construida para la bebida Mountain Dew MDX que disponemos de una descripcin similar a lo siguiente: Conducir un taxi por la ciudad en la noche y ganar tanto dinero como sea posible mediante la entrega de los pasajeros a su destino de manera oportuna. Recoge las botellas de MDX para un aumento de velocidad. Tenga en cuenta el tapn en el extremo que expondr cmo el producto del cliente se expondrn, que es muy intencional.

Step 2
Esquema o estructura metlica a cabo el flujo de todas las pantallas del juego. En su forma ms bsica, esto incluye el men principal, paneles de ayuda, el centro de juego en s, y cualquier pantalla de resultados (enlace cliente, marcadores, etc.) Tenga en cuenta que esto no es un esquema de juego, sino ms bien todos los pasos previos y que lo rodean. Realizar este paso tapa-ciones para la progresin del usuario a travs del juego y ayuda a identificar los puntos de contacto entre las diferentes pantallas que pueden ser difciles de integrar, si usted no planea por anticipado. Figura 3.1 es un ejemplo de cmo un simple juego con pantallas relativamente pocos pueden ver. En este ejemplo, el texto en negrita representa los botones o enlaces que se puede hacer clic para acceder a la pantalla asociada. Una trama tan simple como esto tambin suele ser til a los artistas, que les recuerda los botones necesarios, llamadas, etc Puede haber notado () alrededor del botn Salir. Este indicador-, indica que un botn Salir es opcional. Tiene sentido para los juegos que un jugador se descargar en su ordenador, pero para juegos web en un navegador, en realidad no tienen un lugar. Si agrega la opcin de Salir de su juego en una pgina Web, asegrese de que sabe dnde va a enviar.

Step 3
Con su descripcin y la estructura metlica bsica en la mano, es el momento para delinear los mecanismos bsicos que el juego utilizar. Esto es ms o menos una lista de caractersticas y simplemente puede ser en forma de vietas, pero el detalle ms a cubrir las sorpresas menos te encontrars con una vez que ests en la produccin. Se le permite romper el juego en sus piezas principales de la funcionalidad. Esto incluye componentes tales como las reglas del juego, los mecanismos de entrada (como el teclado o el ratn), el movimiento y la colisin, y cmo la puntuacin del jugador o el progreso se determina y se registran. Una vez que se remitan a Pac-Man como un ejemplo, as es como una lista de la mecnica podra ser: Laberinto del motor del azulejo Nada puede mover a travs de paredes Cualquier espacio abierto est lleno de alimentos, power-ups, o los puntos de bonificacin (fruta) Un paso a travs de conexin de los lados izquierdo y derecho

Cada teja tiene por lo menos uno y hasta cuatro posibles conexiones con otras piezas Colisin de gestin Laberinto Fantasmas Recogida El jugador Entrada de teclado, las flechas direccionales Vive -El jugador tiene tres vidas al comienzo del juego -El jugador pierde una vida cada vez que es golpeado por un fantasma sin un power-up -Cuando el jugador muere, su progreso en el nivel actual se mantiene AI El comportamiento normal: el jugador persigue el comportamiento de encendido: evita jugador Comienza desde una ubicacin central en el comienzo del nivel y es enviado a la misma si se detecta por el jugador en el modo de encendido La velocidad aumenta con cada nivel sucesivo Recogida No se pick-ups regenerar hasta el inicio de un nuevo nivel o un nuevo juego Alimentos -Todos los alimentos recogidas deben ser recogidos para ganar un nivel -Alimentacin contribuye 10 puntos por artculo a la puntuacin del jugador power-ups -Cada nivel del juego tiene cuatro power-ups -Comer un power-up jugador hace invencible durante cinco segundos y les permite comer fantasmas Bono de alimentos - Aparecer en un intervalo aleatorio, de uno en uno, y slo permanecer en el lugar durante unos segundos antes de desaparecer -Contribuye 100 puntos por artculo a la puntuacin del jugador Puntaje Recogida y fantasmas comer contribuir a la puntuacin global La puntuacin final se utiliza como mecanismo de clasificacin de marcadores Los criterios ganadora El jugador gana un nivel en que recoge todos los alimentos El juego contina hasta que el jugador se queda sin vida, recibiendo sucesivamente ms difcil con cada nivel (vase IA) Como puede ver, todas las funciones habituales de Pac-Man han sido fuera alineados aqu, as como sus relaciones entre s. Tenga en cuenta que esta lista no es normalmente el cliente se enfrenta, pero en proyectos con una lnea de tiempo corto, puede ser sabio para ponerlo delante de un cliente para obtener el cierre de sesin antes de comenzar la produccin. Esto puede darle aprovechar al cliente de que el cambio de ltima hora se reduce la lnea y amenaza con hacer fracasar el proyecto. Tambin recibe el cliente de poder y los hace sentir como si tuvieran algo que decir en el proceso, pero en un momento en un cambio de direccin no es catastrfico.

Step 4
Crear una lista de activos. Ya sea que est trabajando con un artista o usted est construyendo todo el juego mismo, es una buena prctica hacer una lista de todo el arte, el sonido, y copia (o texto) los activos que usted necesita. Trabajando a travs de esta lista despus del paso 3 es importante porque la mecnica del juego y las piezas de arte y

animaciones que necesita debe estar fresco en su cabeza. Siguiendo el tema de PacMan, aqu est una lista de activos de la muestra. Puede hacer referencia a su estructura metlica en el paso 2 para ayudarle a recordar cules son los bienes que necesita para las pantallas nongameplay. Las animaciones del juego Pac-Man - Movimiento - De encendido - Muerte Fantasmas - Movimiento -Retirada movimiento Arte del juego esttico Laberinto de las paredes Alimentos Power-ups responsabilidad de alimentos Punto de muestra Pantallas Nongame Cargador de obras de arte Men Principal - Ttulo de obras de arte - El botn de Reproduccin (tres estados: arriba, otra vez, y hacia abajo) - Como botn de Reproduccin ("") - Botn Ver Cuadro de indicadores ("") Cmo se juega - Copia de las Reglas - Reglas de obras de arte - Volver a la principal Button (tres estados: arriba, otra vez, y hacia abajo) Ver Cuadro de indicadores - Cuadro de Indicadores de obras de arte de mesa - Volver a la principal Button (tres estados: arriba, otra vez, y hacia abajo) Resultados de la pantalla - Puntuacin mostrar obras de arte - Jugar de nuevo el botn (tres estados: arriba, otra vez, y hacia abajo) - Mensaje del botn Puntuacin ("") - Volver al botn de men principal ("") Mensaje Puntuacin de la pantalla - Confirmacin de mensajes - Ver Cuadro de indicadores del botn (tres estados: arriba, otra vez, y hacia abajo) - Volver al botn de men principal ("") Audio Efectos de sonido - Comida de sonido de alimentos - Comida de energa-el sonido - Comer alimentos bono de sonido - Comida sonido fantasma - Espritu atacar Pac-Man/death sonido - Nivel de sonido comenzar - Nivel de sonido final - Juego sobre el sonido Msica

- Ninguno, es Pac-Man! Usted probablemente ha notado que no hay nada en esta lista define la forma en cualquiera de estos activos debe buscar / sonido, pero esta lista slo define los objetos y eventos que estn asociados. Lo que los activos se parecen en gran medida debera ser irrelevante para usted, como promotor, siempre que cumplan con sus estndares de calidad o de su empresa y todos los requisitos tcnicos, lo que nos lleva al siguiente paso.

Step 5
Haga una lista de requisitos tcnicos para su juego. Esto incluye dos tipos de criterios: (1) los requisitos del sistema del usuario final en el juego y (2) los posibles requisitos del lado del servidor el juego necesita para funcionar, como una base de datos y scripts de cualquier necesarias para conectarse a l . Para un juego simple, estos requisitos deben ser bastante breve, y si usted est construyendo el juego para los clientes que van a ser el anfitrin ellos mismos, esta lista podra haber sido proporcionado a usted por completo. Vamos a empezar con los requisitos del sistema para el pblico del juego. A menos que el juego es una copia exacta de otro ttulo que ya ha puesto en libertad, es probable que no conocer los requisitos exactos de la mquina necesaria para ejecutar el juego sin problemas. Los presupuestos que hacer ser revisado para precisin durante el proceso de prueba. Por lo menos, se puede establecer una resolucin de pantalla mnima y la versin del reproductor Flash que es capaz de ejecutar el juego. Una nota sobre el reproductor Flash de Adobe es que ahora publica peridicamente actualizaciones de menor importancia que agregar funciones, adems de reparacin de errores. Como resultado, debe ser consciente de que ninguna de las caractersticas del corte-borde que podra requerir una versin parcheada de todo el jugador. Aqu est un ejemplo: la versin de Flash Player principales: 10 versin del reproductor Flash de menor importancia: 10.0.2.13 Resolucin de pantalla: 1024 768 o superior Velocidad de conexin: DSL o superior RAM: 512 MB + CPU: 1.5 GHz + Estos requisitos son bastante modestos para los juegos Flash en el Web. Es evidente que durante las pruebas y QA (garanta de calidad) pro-ceso, puede ajustar sus nmeros iniciales como necesario por la caracterstica del juego establecidas. Juegos con mucho movimiento y muchos objetos en movimiento en la pantalla a la vez son, evidentemente, va a necesitar ms potencia de computacin de una sola pantalla con las piezas del juego esttico. A veces una caracterstica puede ser lo suficientemente convincente como para justificar una compensacin en los requisitos del sistema ms alto y por lo tanto a un pblico reducido. Esta decisin no debe tomarse a la ligera, sin embargo. Por ejemplo, ms robusto a Amnista Internacional que hace que el juego sea ms agradable pero los impuestos de la CPU es ms justificable que un montn de efectos especiales en tiempo real, tales como sombras, brillos, etc, que se ven bien, pero no aade ningn valor real de juego . Usted y el kilometraje de su cliente pueden variar, pero la experiencia me ha demostrado que el menor sea el obstculo tcnico a la entrada ms gente va a jugar su juego. Luego vienen los requisitos del lado del servidor para su juego. Para los juegos de simulacin-nas que carecen de datos que necesita ser salvado de la sesin a sesin-cin, esto es, probablemente, tan simple como tener una pgina HTML a la casa de archivo SWF de su juego. Ms y ms, sin embargo, los jugadores esperan una funcionalidad ms robusta de los juegos en la Web. La capacidad de guardar sus rcords y an mantener un perfil ms grandes juegos es muy popular, ya que da derechos de los jugadores presumir cuando lo hagan bien y con frecuencia produce un cierto nivel de personalizacin. Dependiendo de si estamos haciendo la integracin de back-end (secuencias de comandos del servidor, bases de datos, etc) o se trabaja con un equipo, esta lista de requisitos puede parecer muy diferente. Si usted trabaja en una empresa con un equipo

que ya tiene una infraestructura de base de datos en su lugar, sus necesidades pueden tener un aspecto como el siguiente:

Methods Required

Guardar los parmetros de resultados: nmero de resultados, las iniciales de cadena, la seguridad Devuelve la cadena hash-0 para el xito, uno para el error Los parmetros de carga de la tabla de puntuacin: el tamao-nmero Devuelve la lista de las iniciales y los resultados, de menor a mayor Basado en el ejemplo de estructura metlica, que hemos creado a lo largo de los pasos anteriores, estos dos mtodos (o funciones) son todo lo que necesita para enviar la puntuacin de un jugador y cargar una tabla de puntuaciones ms altas. El primer mtodo, el ahorro de la cuenta, recibir la puntuacin del jugador, sus iniciales, y un picadillo de seguridad (que est cubierto en profundidad en el captulo de la prima en lnea "en guardia"). El segundo mtodo, que se utiliza cuando se ve la tabla de mejores puntuaciones, recibira un tamao de la tabla (como 10, 20, etc) para el nmero de resultados a devolver. Independientemente de si su equipo trabaja en PHP,. NET, o algn otro lenguaje de servidor, esta simple enumeracin les permitir saber cul es el cdigo que necesitan para exponer a Flash para que el juego para llevar a cabo sus operaciones. Si va a la construccin de estas secuencias de comandos de ti mismo, y no ya tienen un sistema en el lugar para hacerlo, tendr que establecer una estructura de base de datos a la casa de todos los datos de su juego. Si usted es nuevo en esta rea de desarrollo, pero quiere aprender, yo recomiendo empezar con PHP. Es gratis, es rpido, y es relativamente fcil de aprender. Tambin hay muchos recursos en los libros y en Internet para saber cmo guardar los datos en una base de datos con PHP. A BETTER PHP Si ya est familiarizado con PHP, yo recomendara mirar en AMFPHP, sino que le permite enviar datos binarios en formato nativo de Flash en lugar de cadenas de nombre / valor. Debido a esto, que te permite enviar y recibir los resultados de tipo (es decir, una serie regresa como un nmero, no como una cadena), y los fragmentos de datos son mucho ms pequeos y ms rpidos. Hay ejemplos del uso de AMFPHP en el captulo 15 y el Apndice D.

Step 6 (Optional)
Diagrama de las clases con un modelador UML. UML significa Lenguaje Unificado de Modelado y es el estndar para la planificacin de complejos de software a travs de un proceso visual. Bsicamente, se trata de mostrar visualmente la jerarqua de las clases que la intencin de crear uno junto al otro, con todas las propiedades a disposicin del pblico y los mtodos enumerados a lo largo de lo que ellos aceptan y devuelven. Usted se estar preguntando, "Por qu querra hacer eso? Por qu no puedo empezar a escribir cdigo y crear lo que yo vaya "La respuesta es simple, un diagrama UML tiene todo el proyecto en consideracin en un solo documento. Es mucho ms fcil hacer los cambios y corregir inconsistencias y confusin en las convenciones de nomenclatura de este punto de vista de pjaro de una vez que tienes una docena de ActionScript los archivos abiertos y que est tratando de recordar lo que el nombre del mtodo que estamos tratando de llamada de uno a otro. Usted puede mantener el diagrama a mano como se trabaja, y hay programas disponibles, que se complet el diagrama y lo convierten en reales archivos de clases de ActionScript completo con todos los mtodos y propiedades listo para ser utilizado! Figuras 3.2 y 3.3 muestran cmo un diseo visual puede ser un conjunto de clase listos para usar plantillas. Ahora te ests preguntando: "Bueno, si este paso es tan impor-tante y til, por qu tienes que aparece al final como opcional?" Hay un par de razones para ello. Una de las

razones es que para juegos muy simples en un apretado calendario, un diagrama UML en toda regla puede producir bajos rendimientos en el tiempo que podra ser mejor gastado slo la anulacin del cdigo. Si ests bastante seguro de que su juego va a depender de un par de archivos de clases, UML es probablemente una exageracin. Yo muy rara vez lo uso en mi trabajo del da a da, pero en ocasiones, ha sido de gran ayuda. En segundo lugar, aunque muchas opciones de la herramienta UML existen, con un gran nmero de ofrendas, todava tengo que encontrar uno que yo recomiendo de todo corazn para el desarrollo de Flash. Bueno, lo dicho. La mejor herramienta UML para ActionScript que he usado es gModeler subvencin de Skinner. Es aerodinmico especial para este uso, sino que fue creada en Flash por lo que se pueden ejecutar en cualquier sistema operativo que soporta el reproductor de Flash, y va a generar cdigo, as como la documentacin. Por desgracia, es de hace varios aos y slo va a generar hasta el cdigo ActionScript 2, dejando a los desarrolladores de AS3 como nosotros en el fro. Si todava ests haciendo un trabajo en AS2, le recomiendo que use para el modelo de su clase.

Figure 3.2 A UML diagram representing a game hierarchy.

Aunque no he encontrado mi equivalente para "AS3 gModeler," he encontrado el libre StarUML (www.staruml.com) es un ttulo slido y bastante sencillo. Adems, un empleado de Adobe ha creado un tutorial que muestra cmo generar cdigo auxiliar de los diagramas muy gModeler misma manera lo hizo. Estos recursos estn disponibles en www.flashgamebook.com. S que esto parece como un montn de pasos slo para empezar, si no ests acostumbrado a este nivel de planificacin. Confa en m, no slo ser ms fcil y ms natural a medida que averiguar lo que funciona mejor para usted, pero usted encontrar

que menos sorpresas surgen en el camino. Ahora que usted tiene su plan de firmeza en la mano, es el momento para abrir esa copia de Flash. Una rpida revisin de los pasos de planificacin: Una descripcin y dos frase Un wireframe de las vistas del juego / Lista El flujo de la mecnica de juego Lista de los activos: el arte, animacin, sonido, vdeo y copias Requisitos tcnicos diagramas de clases UML

Figure 3.3 The generated classes that resulted from the UML diagram in Fig. 3.2.

CAPITULO 4

//COMMENTS FTW!
En este captulo, vamos a cubrir las mejores prcticas para utilizar cuando programacin en ActionScript 3. Esto incluye la utilizacin inteligente de la clase, utilizando el modelo de eventos, manejo de errores, y estructuras de datos. Tambin vamos a cubrir una serie de particularidades de Flash, que tienden a viaje hasta llegar a los desarrolladores de Flash de otros idiomas.

Fair Warning
Vale la pena mencionar que este captulo (como el resto de este libro) se supone que est familiarizado tanto con ActionScript 1 o 2 o otro lenguaje de programacin. Si usted no tiene idea de lo que los objetos, variables o funciones o que nunca han utilizado Flash en absoluto, que se perder muy pronto. Cierta familiaridad con ActionScript 3 es ideal ya que tambin estaremos moviendo muy rpidamente a travs de una amplia variedad de temas, pero no es absolutamente necesario. La documentacin que viene con Flash expone sobre todos estos temas, as que si usted se encuentra confundido o si desea obtener ms informacin, puedes consultar los ejemplos. Tambin puede siempre hacer preguntas sobre cualquier captulo de este libro en www.flashgamebook.com. Si usted es

un usuario experimentado AS3, ser paciente-Nosotros seremos obtener a travs de los conceptos bsicos tan pronto como sea posible y pasar a la parte divertida!

Part 1: Classes
Como aprendimos en el captulo 1, las clases son fundamentalmente los planos de los objetos en ActionScript (y muchos otros lenguajes de programacin orientados a objetos). Definen las propiedades que son inherentes a ese objeto, as como los mtodos que determinan cmo ese objeto funcio-nes por su cuenta y como parte de un contexto ms amplio. Cuando se crea un objeto de una clase, ese objeto que se conoce como una instancia de esa clase. Cada instancia de una clase puede tener diferentes valores especficos para sus caractersticas, pero todos comparten la misma arquitectura, por lo que Flash sabe que todas las instancias de una clase determinada se comportar de la misma manera. En su forma ms simple, de instancias, o la creacin de un objeto se parece a la que se muestra a continuacin en ActionScript.

var myObject:MyClass = new MyClass();


En una convencin de nomenclatura estndar, las clases deben comenzar con una letra mayscula y luego usar InterCaps, o "CamelCase" a partir de entonces, que denota el comienzo de una palabra con una letra mayscula. CamelCase hace que los nombres en cdigo mucho ms fcil de leer, tomar, por ejemplo, el nombre ms largo de la clase se utilizan actualmente en la base de cdigo en Flash CS5:

HTMLUncaughtScriptExceptionEvent
Si bien esto es algo as como un ejemplo extremo, tenga en cuenta que es mucho ms fcil de leer que:

htmluncaughtscriptexceptionevent
Packages
Un conjunto de clases con funcionalidad categricamente similares o relacionados pueden ser agrupados en paquetes. Las clases en el mismo paquete pueden hacer referencia a ellos sin ningn cdigo especial, mientras que las clases en diferentes paquetes debe importar unos a otros con una lnea de cdigo, similar a lo siguiente:

import flash.display.MovieClip;
Tenga en cuenta que en este caso, la clase MovieClip se encuentra dentro del paquete de la exhibicin, que forma parte del paquete flash ms grande. La convencin estndar de nomenclatura para los paquetes es todas las letras minsculas, que los diferencia de clases visuales. Los paquetes estn representados en el sistema de archivos como una serie de carpetas anidadas. En el ejemplo anterior, si la clase MovieClip no se incluy una parte del reproductor de Flash, se puede encontrar el archivo MovieClip.as dentro de una carpeta llamada pantalla, dentro de otra carpeta llamada flash.

Classes as Files

Para crear una clase, slo tiene que abrir Flash o un editor de texto como Flash Desarrollar y crear un marco bsico. Todas las clases AS3 debe tener esta cantidad mnima de cdigo para funcionar.
package ash.display " { " " public class MovieClip " { " } " }

Tenga en cuenta que los nombres en negrita son el paquete de encargo y los nombres de clase de su eleccin. Todas las clases necesitan una definicin de clase envuelto por una definicin de paquete, colocado en una estructura de carpetas que coincide con la jerarqua de paquetes. Sin embargo, esta clase no hacer nada, as que la prxima vamos a cubrir la adicin de propiedades y mtodos.

Constructores
Cada clase tiene un constructor, incluso si no hace nada y no se define explcitamente. Es la funcin, con el mismo nombre que la clase, que se llama cuando una nueva instancia de la clase se crea. En el caso de nuestro ltimo ejemplo, incluso si lo dejamos fuera, Flash aade el siguiente a la clase:

package flash.display { ! public class MovieClip { ! ! public function MovieClip() { ! ! } ! } }


El constructor nos permite ejecutar cualquier cdigo de inicializacin que la nueva instancia podra necesitar, o no puede hacer nada, dependiendo de cmo la clase se va a utilizar.

Constantes, Variables, y Metodos


Una clase sin ningn tipo de datos o funcionalidad en su interior no es de muy gran utilidad, por lo que podemos definir variables o propiedades, de la clase que almacenar la informacin y los mtodos o funciones que llevar a cabo las acciones. Voy a suponer que usted ya sabe cmo utilizar las variables y mtodos, ya sea de las versiones anteriores de la accin de secuencias de comandos o en otro idioma. Las constantes son completamente nuevos para AS3, pero no un concepto complicado. En esencia, son variables que slo se puede asignar un valor una vez. Cuando se declara una constante o variable, lo mejor es darle un tipo, que indica a Flash que la clase que se utiliza como modelo para esa variable. A continuacin se presentan algunos ejemplos:

const myInt:int = -3; var myBoolean:Boolean var myString:String = var myObject:Object =

//WILL ALWAYS BE -3 = true; "Hello World"; new Object();

AND CANNOT BE MODIFIED

Dar una variable de un tipo tambin se guarda la memoria, ya que Flash sabe la cantidad mxima de memoria que necesita para almacenar una instancia de una clase especfica. Si no escribe una variable, como en el siguiente ejemplo, Flash debe reservar una mayor cantidad de memoria para dar cabida a cualquier valor posible.

var myMystery:* = "?";


Una vez que se asigna un valor a una variable sin tipo, se convierte en tipo a partir de ese momento, por lo que los intentos de cambiar su tipo (como se puede en versiones anteriores de ActionScript) dar lugar a errores de ejecucin, tales como el siguiente ejemplo.

var myMystery:* = "?"; myMystery = 5; //WILL CAUSE A RUNTIME ERROR


Lo que es peor, el ejemplo anterior, no sern tomados durante la compilacin, por lo que podra conseguir perdido hasta que el del juego se despliega en directo para los usuarios reales. Menos que sea absolutamente inevitable (como una instancia en la que simplemente no saben lo que se asigna a una variable), escriba siempre sus variables. Usted va a crear dolores de cabeza mucho menos en el camino por ti mismo. Al definir los mtodos, no son las prcticas anlogas a seguir. Se trata de las mejores prcticas para definir los parmetros que un mtodo recibir y lo que, en todo caso, volver.

function myFunction (myParam:String):void { ! //COMMANDS HERE }


En este ejemplo, el mtodo acepta un solo parmetro, myParam, y no devuelve nada. Si usted tiene un caso en que un mtodo tiene que aceptar un nmero indeterminado de parmetros, una sintaxis ligeramente diferente puede ser utilizado.

function myFunction (...params):void { ! //COMMANDS HERE }

Aqu, el nico parmetro, params, es precedido por tres puntos. Esto significa que Flash que el parmetro debe ser tratado como una matriz de valores, por lo que llegar a cada parmetro que se pas debe hacerse a travs de la sintaxis de matriz:

function myFunction (...params):void { ! trace(params[0]); }

Es importante recordar que al aceptar un nmero variable de parmetros, comprobacin de tipos durante la compilacin no coger todo intento de pasar los datos no vlidos para el mtodo. En este caso, lo mejor es hacer algn tipo de control manual y Gener-ate errores en tiempo de ejecucin. Vamos a cubrir ms de los errores en breve.

function myFunction (...params):void { ! for (var i:int = 0; i < params.length; i++) { ! ! if (!(params[i] is DisplayObject)) { ! ! ! throw new ArgumentError("Only DisplayObjects ! ! ! ! can be used in myFunction."); ! ! } ! } }
El vaco de palabras clave se utiliza para denotar una funcin que no devuelve nada (y se producir un error si se intenta), y cualquier otro tipo que las variables se puede utilizar tambin puede usar aqu. Si se suelta el valor devuelto por completo, se puede optar por devolver algo o no, dependiendo de alguna pieza de lgica interna. Sin embargo, como una buena prctica, un mtodo siempre que declare lo que volver, ya que ayuda a detectar los errores y mantiene la coherencia.

Metodos Getter y Setter


Hay dos tipos especiales de los mtodos que se pueden crear cuando se quiere exponer a una variable fuera de su categora, pero que desea controlar cmo se utiliza la variable. Se les conoce como de acceso o de mtodos getter y setter, y sese denominan como normal variable asigna -cin, sino que actan como funciones debajo . Usted puede utilizar para hacer que las variables de slo lectura o para realizar acciones en un valor antes de que se configura como una variable. Hay algunas reglas a seguir cuando se utilizan estos mtodos especiales: los mtodos getter no aceptar los parmetros y debe especificar un tipo de retorno y mtodos de establecimiento slo puede tener un parmetro y no devuelve nada. Echemos un vistazo a un par de ejemplos en un nico guin.

package { ! public class MyClass { ! ! protected var _maxNameLength:int = 8; ! ! protected var _name:String; ! ! protected var _lives:int = 3; ! ! ! ! public function get name():String {! ! ! ! return _name; ! ! } ! ! public function set name(value:String):void {

! ! ! ! !

! ! ! ! !

! name = value.substr(0,maxNameLength); } public function get lives():int { ! return _lives; }

! } } //OUTSIDE CLASS var myInstance:MyClass = new MyClass(); myInstance.name = "CHRISTOPHER"; trace(myInstance.name); //OUTPUTS "CHRISTOP"; trace(myInstance.lives); //OUTPUTS 3; myInstance.lives = 10; //THROWS ERROR
Las funciones getter y setter nombre de devolver el valor de _name protegidas, que de otro modo seran inaccesibles, y tambin las fuerzas a cualquier intento de asignar un valor a la propiedad _name a una longitud fija de ocho caracteres. El comprador vida es un ejemplo de una propiedad de slo lectura, no hay una funcin setter de acompaamiento. Cualquier intento de establecer el valor se producir un error. Esto es muy til cuando se necesita utilizar valores dentro de la categora, pero que tambin quieren clases externas para poder leer el valor. ** La convencin estndar para nombres de variables y el mtodo es comenzar en minscula y luego usar CamelCase para todas las palabras siguientes en el nombre. Existe cierto debate sobre la manera de delimitar las variables pblicas de proteccin, privados o internos. Mi preferencia es seguir la convencin de Adobe, que consiste en utilizar un guin bajo ("_") al principio del nombre de cualquier propiedad que no est expresamente pblico. Si lo hace, le permite utilizar mtodos getter y setter como el ejemplo anterior, donde _name fue la variable protegida y el nombre fue utilizado para el par de mtodos. Esta continuidad en los rendimientos de su denominacin y hace que su cdigo sea ms fcil para los dems (y usted) a seguir.
AN ALTERNATE NAMING CONVENTION Desde que escrib la primera edicin de este libro, he tenido el privilegio de trabajar directamente con algunos veteranos de la industria del videojuego y recogi algunos nuevos patrones y convenciones que se utilizan comnmente. Aunque creo que todava hay valor en el mtodo de Adobe si usted es un principiante o si usted es slo el trabajocin en Flash, yo quera hablar de esta convencin alternativa, ya que es especialmente til si usted est con la intencin de tratar de aprovechar todo el cdigo plata-formas fuera de AS3. Es tambin lo que ahora uso como mi nivel y creo que es justo dar a conocer que. Bsicamente, no hace diferencia entre las propiedades pblicas y privadas, sino que todos los prefijos con "m" como miembros de una clase. No hay ninguna razn real para los miembros pblicos o privados para que los diferentes convenios, porque el compilador acceso de las capturas ilegales de cualquier tipo-no es como usted puede realmente estropear. Adems, tiene la ventaja aadida de agrupar todas las variables miembro de una clase alfabeticamente cuando se utiliza sugerencias para el cdigo. Por ejemplo, la velocidad de un jugador sera mSpeed en lugar de _speed, independientemente de su pblico que, protegido, o privado. Nombres de los mtodos y

nombres de acceso se sigue utilizando como normal, pero los parmetros del mtodo son precedidos por un guin con el fin de que denotan claramente dentro del mtodo como algo temporal y local. Usted podra utilizar algo ms que un prefijo, algunas personas como "p" en su lugar. No utilice un signo de dlar "$", como en algunos otros idiomas, un ingeniero de Adobe hombres mencionados en su blog que esto podra causar problemas en determinadas circunstancias, ya que los conflictos internos con Flash Player de nomenclatura. El ltimo ejemplo en el captulo 16 se utilizan estos convenios ms recientes, para que pueda ver cmo se comparan con el estndar de Adobe y decidir si lo prefiere. En ltima instancia, lo importante para recordar cuando se trabaja en cualquier proyecto es escoger un mtodo que tenga sentido y aferrarse a l constantemente.

Class Identiers
Las clases se pueden utilizar algunos identificadores diferentes para determinar la forma en que estn expuestos a otras clases. Los cuatro identificadores disponibles son los siguientes: Pblica: El atributo public define que una clase puede tener acceso o utilizar de cualquier otro lugar. Interior: El atributo interno permite que una clase slo se puede acceder por otras clases del mismo paquete -De forma predeterminada, las clases se interna a menos pblico determinado, de modo interno en realidad no tienen que ser utilizados. Dinmica: Si una clase es dinmica, puede tener propiedades y mtodos a las que en tiempo de ejecucin -De forma predeterminada, las clases son estticas y slo se puede utilizar las propiedades y mtodos definidos dentro de s mismos. Final: Si una clase es final, no puede ser prorrogado por otros de clase - Ms sobre esto en breve ser discutido cuando cubrimos la herencia - De forma predeterminada, las clases pueden extenderse y no son definitivos. Todos estos identificadores pueden ser utilizados con los dems, salvo que el pblico no se puede utilizar con la residencia. Del mismo modo, las variables y mtodos de SAO puede tener su propio conjunto de identificadores que se utilizan para definir la forma en que se exponen fuera de la clase. Pblica: Al igual que el atributo de la clase, esto denota que una variable o mtodo se puede acceder desde cualquier lugar, incluso fuera de la clase. Interior: Tambin similar a las clases, esto denota que una variable o mtodo slo se puede acceder desde el interior de su paquete. Privado: El atributo private impide una variable o mtodo desde que se accede fuera de su clase individual. Proteccin: Un atributo protegido es ms o menos como privado, salvo que las variables de proteccin y los mtodos tambin se puede acceder a las clases que extienden la clase actual (ms sobre la herencia en breve). Esttica: Si un mtodo o variable es esttica, es parte de la clase y no casos de la clase, es decir, slo hay cada vez un valor o funcionalidad definida, y se accede a travs del nombre de la clase en lugar de una instancia (es decir, MovieClip.staticVar en lugar de myMovieClip.staticVar) -Tenga en cuenta que las propiedades y mtodos estticos no se heredan las subclases. Los primeros cuatro atributos en esta lista no se puede utilizar uno con el otro, ya que entrara en conflicto, pero esttica se puede utilizar en combinacin con cualquiera de ellos.

Inheritance and Polymorphism

Estos dos conceptos se abordan en breve en el captulo 1, pero vamos a exponer en ellos un poco ms aqu. Cuando usted necesita para crear una clase que tiene la misma funcionalidad que otra clase, pero necesita algunas propiedades o mtodos adicionales, una buena opcin para ahorrar tiempo y la codificacin es extender la primera clase a una nueva clase, conocida como una sub-clase. Todos los mtodos pblicos y protegidos y variables que no son estticos, estar disponible para la nueva clase. Para aclarar cualquier esttica propie-dades de los padres, o superclase, debe ser precedido por el nombre de clase (como en el ejemplo siguiente). Adems, los mtodos internos o variables estarn disponibles para la subclase si se encuentra en el paquete de la misma edad que su superclase. Para ilustrarlo, veamos un ejemplo a continuacin:

package { ! ! public class SuperClass { ! ! static public var className:String = "SuperClass"; ! ! } } package { ! ! public class SubClass extends SuperClass { ! ! ! ! public function SubClass() { ! ! ! ! ! trace(SuperClass.className); //OUTPUTS ! ! ! ! ! ! "SuperClass" ! ! ! ! ! trace(className); //THROWS ERROR ! ! ! ! } ! ! } } //FROM OUTSIDE EITHER CLASS trace(SuperClass.className); //OUTPUTS "SuperClass" trace(SubClass.className); //THROWS ERROR
Ocasionalmente, tendrs que cambiar la funcionalidad de un mtodo en una subclase de la forma en que se comporta de la superclase. Este cambio en la funcionalidad a travs de la herencia que se conoce como polimorsmo. Usted puede hacer esto utilizando la palabra clave override antes del inicio del mtodo, aunque con una serie de advertencias. Los mtodos slo puede ser anulado, sin propiedades Slo pblica, protegida, y los mtodos internos puede ser anulado Los mtodos de interior slo puede ser anulado en las subclases en el mismo paquete que la superclase El mtodo primordial debe coincidir con la nueva composicin del mtodo original, con los mismos parmetros y el valor devuelto Veamos un ejemplo.

package { ! class SuperClass { ! ! public var name:String = "SuperClass"; ! ! protected var _number:Number = 5; ! ! internal var _packageNumber:Number = 7.5;

!
"

!
"

! ! ! }

! ! }

private var _secretNumber:Number = 10;! public function helloWorld():void { ! trace("HELLO WORLD"); }

package { ! class SubClass extends SuperClass { ! ! public function SubClass() { ! ! ! trace(name); //OUTPUTS "SuperClass" ! ! ! trace(_number); //OUTPUTS 5; ! ! ! trace(_packageNumber); //OUTPUTS 7.5 ! ! ! helloWorld(); //OUTPUTS "HI WORLD"; ! ! ! super.helloWorld(); //OUTPUTS "HELLO WORLD"; ! ! ! trace(_secretNumber); //THROWS ERROR; ! ! } ! ! ! ! } ! ! ! } override public function helloWorld():void { ! trace("HI WORLD"); }

Cuando las huellas SubClase a cabo las propiedades que ha heredado de la superclase, se mantienen intactos, con excepcin de la variable privada. Adems, cuando se ejecuta desde helloWorld subclase, traza un mensaje diferente que cuando se ejecuta desde SuperClass. Dicho esto, hay una manera de llegar a la implementacin de la superclase de helloWorld mediante el uso de la palabra clave super. Super devuelve una referencia a la superclase de la clase actual, lo que le permite el acceso a cualquier mtodo que pueda tener se reemplaza.

Interfaces

Uno de los aspectos ms comnmente entendido mal (incluso por m mismo por mucho tiempo) de la programacin orientada a objetos (POO) es el concepto de interfaces. Es confuso por varias razones, no menos importante de las cuales es la confusin de una interfaz de programacin orientada a objetos con una interfaz grfica de usuario (como los sistemas operativos proporcionan). Una interfaz no contiene ningn cdigo, en las afueras de la declaracin de los mtodos pblicos que una clase va a usar y lo que cada uno acepte como parmetros y lo que cada uno va a regresar. Si una clase es como un plano de la direc-ciones especficas para la creacin de una nueva instancia de esa clase, una interfaz es como una lista de verificacin para ese plan para asegurarse de que se adhiere a una cierta espe-calcificacin. Tal vez la mejor manera de entender cmo se estructura una interfaz es ver una en el cdigo.

public interface IEventDispatcher { ! function addEventListener(type:String, listener:Function, ! ! useCapture:Boolean=false, priority:int=0,useWeakReference: ! ! Boolean = false):void; ! function removeEventListener(type:String, listener:Function, ! ! useCapture:Boolean=false):void; ! function dispatchEvent(event:Event):Boolean; ! function hasEventListener(type:String):Boolean; ! function willTrigger(type:String):Boolean; }
Tenga en cuenta las diferencias entre una interfaz y una clase. Las interfaces son siempre pblicos o internos, al igual que sus homlogos de clase, pero ninguno de los mtodos tiene los atributos, ya que se supone que todos los pblicos. Las interfaces no pueden incluir variables, pero pueden incluir mtodos getter y setter, que puede sustituir a las variables. En este punto, que muy bien podra estarse preguntando, "Por qu nunca la molestia de utilizar una interfaz cuando simplemente puede ampliar una clase para asegurarse de que todas las subclases tienen los mtodos disponibles?" La respuesta es que a diferencia de algunos otros idiomas, clases de en Flash no puede heredar de mltiples superclases. Esto plantea un problema cuando se necesita extender una clase sino que incluyen la funcionalidad de otra clase en una jerarqua de herencia diferentes. Un buen ejemplo de una situacin como esta es la interfaz IBitmapDrawable que forma parte del paquete de visualizacin de Flash. Cuando quieres dibujar algo en un objeto BitmapData, puede utilizar cualquiera otro objeto BitmapData o un DisplayObject. Con el fin de conservar en el mismo cualquier objeto de que se pasa al mtodo draw, tanto BitmapData y DisplayObject implementar una interfaz llamada iBit-mapDrawable. Esta interfaz en realidad no hace otra cosa que hacer cumplir esta compatibilidad entre las dos clases que no tienen nada que ver entre s. El mtodo draw puede tener el siguiente aspecto: public function draw(source:IBitmapDrawable, matrix:Matrix = null, ! colorTransform:ColorTransform = null, blendMode:String = null, ! clipRect:Rectangle = null, smoothing:Boolean = false):void Cuando un objeto se pasa para el parmetro de fuente, los controles de Flash para ver si el objeto implementa la interfaz IBitmapDrawable y puede lanzar un error dejar que el desarrollador sabe. He aqu otro ejemplo de una clase que implementa una interfaz, mientras que la ampliacin de una clase de relacin. package { ! import ! import ! import ! import

flash.events.IEventDispatcher; flash.events.EventDispatcher; flash.events.Event; flash.geom.Rectangle;

! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! }

public class RectangleDispatcher extends Rectangle ! implements IEventDispatcher { ! ! private var _dispatcher:EventDispatcher; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! } ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! public function RectangleDispatcher() { _ ! dispatcher = new EventDispatcher(this); } override public function set width(value:Number) { ! super.width = value; ! dispatchEvent(new Event(Event.CHANGE)); } override public function set height(value:Number) { ! super.height = value; ! dispatchEvent(new Event(Event.CHANGE)); } public function addEventListener(type:String, ! listener:Function, useCapture:Boolean=false, ! priority:int=0,useWeakReference:Boolean = ! false):void { ! ! _dispatcher.addEventListener(type, listener, ! ! ! useCapture, priority, useWeakReference); } public function removeEventListener(type:String, ! listener:Function, useCapture:Boolean=false):void { ! ! _dispatcher.removeEventListener(type, listener, ! useCapture); } public function dispatchEvent(event:Event):Boolean{ _dispatcher.dispatchEvent(event); } public function hasEventListener(type:String):Boolean{ ! return _dispatcher.hasEventListener(type); } public function willTrigger(type:String):Boolean{ ! return _dispatcher.willTrigger(type); }

En este ejemplo, la clase est extendiendo es rectangular, que no tiene vnculos con la jerarqua EventDispatcher. Mediante la implementacin de la interfaz IEventDispatcher y la creacin de una instancia de la clase Event-Dispatcher, podemos disfrutar de la funcionalidad de un rectngulo y un EventDispatcher. Cuando la anchura o la altura de

este rectngulo de cambios especial, que enviar un evento a todo lo que est escuchando. Nosotros cubriremos ms en los eventos en una seccin posterior. Entonces, la pregunta ahora es, probablemente, "Cundo debo utilizar interfaces?" A diferencia de algunos defensores de programacin orientada a objetos que creen que la respuesta es siempre: "Creo que realmente depende de la amplitud del juego o aplicacin que estamos construyendo. A veces, en partidas rpidas, donde yo soy el nico desarrollador, prefiero la herencia, porque por lo general tienen el lujo de definir mi cadena de herencia completa y no tener que trabajar dentro de un marco preexistente. Me parece interfaces para ser ms til cuando se trabaja con otros desarrolladores (en particular los de otras empresas que no estamos dispuestos a compartir cdigo especfico entre s), ya que podemos estar de acuerdo sobre una interfaz para nuestros elementos de la clase comn y la integracin de nuestros respectivos componentes - componentes es mucho ms probable que funcione sin problemas como resultado. Las interfaces son tambin muy tiles en la creacin de motores flexibles, del juego reutilizables para juegos ms complejos, como veremos en captulos posteriores. Al final, las interfaces son slo una herramienta, y como cualquier herramienta, que debe ser usado cuando sea necesario y deja solo el resto del tiempo. De hecho, en los ejemplos de mviles, vamos a ver hacia el final de este libro, donde el rendimiento es un factor clave, y las interfaces a menudo no son la respuesta.

Linking Classes to Assets in Flash

Un elemento bsico comn de mi desarrollo del juego (y posiblemente una de las mayores ventajas de desarrollo de juegos en Flash) es la facilidad con la que se puede vincular una clase de Flash a un elemento en la biblioteca de la FLA. Cualquier elemento de la biblioteca puede tener una clase asociada vinculados a ella, pero los que es probable que ms utiliza son las de DisplayObject sub-clases Sprite y MovieClip. En primer lugar, cmo Flash crea clases de elementos de la biblioteca debe ser entendido. Si se establece la propiedad vinculacin de un smbolo en la biblioteca, se ha creado para una clase cuando se compila el archivo SWF, independientemente de si o no uno se defini explcitamente. Por ejemplo, tomar un Sprite en una biblioteca de FLA denominado "cuadrado", con un simple cuadrado azul en su interior. Debido a que el smbolo no es un Sprite directamente, sino ms bien una extensin de Sprite, una nueva clase con el nombre de "cuadrado " se crear en tiempo de compilacin que se extiende Sprite y tiene el siguiente aspecto: package { ! ! import flash.display.Sprite; ! ! public class square extends Sprite {} } La razn de Flash hace esto es porque necesita un punto de referencia a ser capaces de crear instancias de ese smbolo en el escenario si se utiliza en el script en alguna parte. Para ver la evidencia de esto, se puede ver en todas las clases incrustado en un archivo SWF compilado en el interior de FlashDeve-lop. En la figura. 4.1, se puede ver la biblioteca de Flash a la izquierda, con el smbolo exportado con el nombre de "plaza" y refleja a la derecha en el panel de FlashDevelop proyecto con las clases utilizadas en el archivo SWF. Si haba una clase definida de la plaza, sera utilizar ese archivo en lugar de generar por s solo. Para ver el resultado de esto, podemos cambiar el nombre de la clase de vinculacin del smbolo en maysculas "plaza" para que coincida con el nombre de una clase que ha definido para ello.

package { ! import flash.display.Sprite; ! public class Square extends Sprite { ! ! public function Square() { ! ! ! rotation = 45; ! ! } ! } } Ahora, cuando el cuadrado se aade a la escenario, ser rotado 45 grados.

Class versus Base Class

Al abrir el panel de vinculacin para asignar una clase a un smbolo, no es un campo adicional que se utiliza para definir la clase base de un smbolo. El smbolo de la clase base es donde se define qu clase desea prorrogar respecto de ese smbolo. En el ejemplo anterior, el clase Square se extenda desde Sprite, as que el clase base para que el smbolo era flash.display.Sprite, como se muestra en la figura. 4.2.

Figure 4.1 FlashDevelop can reveal the classes used in a SWF.

Figure 4.2 The properties panel shows the linkage for the square Sprite.

Sin embargo, supongamos que queremos crear varias plazas de diferentes colores. No se necesita ninguna funcionalidad adicional en la parte superior de lo que la plaza ya establece, por lo que toma una clase individual para cada una sera tedioso. En su lugar, podramos hacer varios clips de diferentes colores y configurar cada una de sus clases base de la Plaza. A continuacin, los nombres de clase individuales podran ser cosas como squareBlue, squareGreen, etc Un ejemplo se muestra en la figura. 4.3.

Using Exported Symbols with No Class File

Trato de hacer una poltica explcita para escribir un archivo de clase de cualquier smbolo que tengo la intencin de exportar para ActionScript porque es ms fcil no perder de vista que los smbolos estn disponibles para m y me permite agregar rpidamente funciones como sea necesario. Sin embargo, a veces, como en el caso del ejemplo anterior la plaza, algunos de los smbolos que estoy usando todos derivar de una clase de base que he creado y slo se diferencian por el activos en su interior. Para utilizar estas clases en el cdigo, slo puede hacer referencia a la clase nombre como lo hara con cualquier otro. Por ejemplo, si yo tuviera una clase de documento para el ejemplo anterior, podra ser algo como lo siguiente:

Figure 4.3 The base class can be set to use a class for multiple symbols with different assets.

package { ! import flash.display.Sprite; ! public class ClassesExample extends Sprite { ! ! public function ClassesExample() { ! ! ! var blue:Square = new squareBlue(); ! ! ! addChild(blue); ! ! ! var green:Square = new squareGreen(); ! ! ! addChild(green);

! ! }

! }

Usted puede usarlo como una clase normal, porque cuando Flash compila el archivo SWF, ser una clase normal, igual que si hubiera escrito usted mismo.

getDenitionByName and Casting

Suponga que usted necesita para crear instancias de una serie de smbolos o las clases que siguieron una secuencia numrica, por ejemplo a los efectos de nuestro ejemplo "Square1" a travs de "square10." Sera muy tedioso tener que crear instancias de ellos uno a la vez y crear una gran cantidad de los cdigos adicionales. Probablemente sera algo como lo siguiente: var square:Square = new square1(); addChild(square); square = new square2(); addChild(square); ... square = new square10(); addChild(square); Por suerte, Flash nos da el capacidad de "buscar" una clase por su nombre. En el paquete flash.utils, hay un mtodo llamado getDefinition, sobrenombre, nombre, dijo que acepta como parmetro de cadena.

for ! ! ! ! }

(var i:int = 1; i <= 10; i++) { var squareClass:Class = getDefinitionByName("square" + i) ! as Class; var square:Square = new squareClass(); addChild(square);

Devuelve un objeto genrico que hace referencia a la clase, si es que existe. Ese objeto se puede convertir a una clase a travs de una operacin conocida como de calidad. De fundicin es el proceso de decirle a ActionScript para tratar un objeto como un tipo diferente de objeto. Es ms a menudo se utiliza para tratar una subclase como su superclase, que se conoce como "seguro" casting porque todas el funciones se garantiza que la transferencia desde el superclase. Un ejemplo de esto sera con Sprite y MovieClip. MovieClip se extiende de Sprite, lo que es seguro para lanzar un clip de pelcula como Sprite, porque sus mtodos pblicos y las variables coinciden. Si tuviramos que hacer lo contrario, lanzar un Sprite como un clip de pelcula, sera considerado un "inseguro" casting porque un Sprite no contiene todos los mtodos y variables de un MovieClip. Mientras que Flash le permitir emitir una u otra direccin, por lo general es una buena idea para evitar la conversin a una subclase a menos que sepa con certeza que el mtodos y las variables que desea llamar estar disponible. En el caso del ejemplo anterior, la conversin de un objeto de base para una clase es una tcnica de fundicin inseguras, pero la clase la clase (una nomenclatura confusa para estar seguro) no contiene mtodos adicionales pblica o variables, lo que no hay peligro de causar un

error . Vamos a utilizar la fundicin y getDefinitionByName regularmente ms adelante en ejemplos juego.

Part 2: Events

You might also like