Shift F12

Icono

Compendio de recursos para hacer magia en Flash y ActionScript :: por Héctor Padilla

Warning: 1012: Variables of type Object cannot be undefined. The value undefined will be type coerced to Object before comparison.

Ok… Los «warnings» son solamente eso, no hacen que nuestro programa truene y hay más de un programador que los deja ahí. Eso está mal. Los warnings están ahí para indicarnos que hay algo que no estamos haciendo bien, y si dejamos que se vayan apilando al rato tenemos errores que salen de errores que vienen de warnings y se vuelve un infierno del debugeo. 

Entonces… Cómo nos deshacemos del Warning: 1012 ?… No declares variables como «undefined», ni hagas comparaciones (==, !=) por «undefined». En lugar de eso utiliza la palabra «null». :-)

Saludos!

Filed under: Flash

Ganar dinero con juegos en Flash

Nuevo sistema de monetización para tus juegos en flash:

Andrograde te permite monetizar tus juegos a través de la compra de «bienes virtuales», y según ellos tienen mejores rendimientos que sitios como Mochiads (que ya es muy bueno de por sí).

Por cierto, por si no los conocías es también muy interesante explorar lo que te ofrecen sitios como los siguientes:

Estos sitios pueden darte algo de dinero por tu juego (patrocinio), y además compartir ganancias que se generen gracias a anuncions. :-)

Filed under: Flash,

Fractales con ActionScript3

El artículo de Gamasutra sobre juegos procedurales me hizo retomar la idea de fractales, y al ver mis notas me topé con este excelente recurso que no he compartido:

fractales

De qué nos sirven los fractales?. Pues bueno, por un lado se ven preciosos, pero por otro lado (más interesante para nosotros) nos ayudan a generar mucho MUCHO contenido, por ejemplo, podemos popular un bosque de árboles creando una funcion que haga árboles y sus ramas con una serie de Math.random por aquí y por allá, y todos los árboles serán completamente diferentes.

Últimamente están saliendo juegos cuyos niveles son 100% generados de esta manera, en lugar de que alguién diseñe los niveles, un programador diseña reglas y el universo es creado en tiempo real y siempre diferente.  (de eso habla el artículo de gamasutra) :-) Por ejemplo, vean aquí esta idea aplicada a la creación de relámpagos!

Algunos links que vienen al caso:

 

Disfruten!

Filed under: AS 3, Flash, Herramientas, Inspiracional, Librerías, , ,

Cómo instanciar objetos de cualquier tipo dinámicamente

En el post anterior definimos ¿cómo crear variables de manera dinámica?, es decir, si tengo que poner 100 nubes en el cielo, en 100 posiciones diferentes, de qué manera puedo crearlas todas dentro de un ciclo for, en lugar de ponerlas a mano. Ok, pues eso ya está resuelto en el post anterior.

Lo de ahora es un poco más complicado, qué tal que no solo quiero crear nubes, sino que quiero crear todo el contenido que hay en un mundo virtual dentro de ese ciclo?. Qué tal que el mundo está definido en un archivo externo (xml?), y ahí se marca la posición de: enemigos, obstaculos, escaleras, etc. Y cada tipo de objeto tiene su propia clase… ¿cómo demonios puedo meter todo eso dentro de un ciclo for?…

Ahora la clave está en «getDefinitionByName», digamos que todos los elementos del mundo están en un arreglo bi-dimensional llamado «elementos[][]», y tiene algo asi:

elementos.push([«arbol», 0, 10, 50]);
elementos.push([«arbol», 0, 20, 30]);
elementos.push([«nube», 10, 20]);
elementos.push([«nube», 30, 20]);

Como verán, ahí hacemos referencia a dos tipos de objetos: arboles y nubes, y entre ellos pueden tener más o menos atributos. Lo que nos interesa es que en su primer elemento hagan referencia al tipo de objeto que son. Despues, dentro de nuestro ciclo podemos hacer lo siguiente:

var ClaseGenerica:Class = getDefinitionByName( elementos[i][0]) as Class;   
var cosa:Sprite = new ClaseGenerica(elementos[i][0], elementos[i][1], elementos[i][2]);
cosa.name = elementos[i][0] + i;
// así se llamaría nube1, nube2, arbol3, arbol4… etc 

Eso de «getDefinitionByName( elementos[i][0]) as Class » toma las palabras «arbol» o «nube» y lo utiliza como si fuera una clase… Nota: para que esto funcione la clase «arbol» o «nube» deben de existir junto con tus otros archivos, y deben de recibir como argumentos del constructor lo que indicamos en: ClaseGenerica(elementos[i][0], elementos[i][1], elementos[i][2]);  La manera más fácil de verlo es que en lugar de «ClaseGenérica» ahí dice «nube» o «arbol» o cómo sea que se llame tu clase. :-P

Y listo!… Tiene sentido?… Cualquier duda porfavor mándenme un comentario. Esto es MUY últil para varios proyectos, pero es complicado de manejar la primera vez. :-) Ya con algo así, puedes hacer que un arbol una vez iniciado comience a producir fruta por ejemplo, mientras que una nube comienza a moverse o a crear lluvia… o qué se yo. Clases independientes, pero todas instanciadas dentro del mismo ciclo. Esto reduce el número de líneas de nuestro código y aumenta la facilidad de darle mantenimiento. :-D

 

Extra: Recomiendo también ver este post para ahorrarse futuros dolores de cabeza.

Filed under: AS 3, Flash, Herramientas, , , ,

Crear variables dinámicamente con ActionScript 3

¿Cómo crear variables de manera dinámica en AS3?… Es una MUY buena pregunta y hace poco me estuve rompiendo la cabeza por no tener ni idea de cómo hacerlo. Ojalá este post te ayude a ahorrar tiempo y sacar el trabajo adelante.

La clave?!?!… El .name de tus objetos!… Así es, en AS2 podíamos fácilmente crear N objetos con nombres diferentes (por ejemplo: objeto1, objeto2, objeto3… etc). En as 3 eso no se puede tan directamente, lo que debemos de hacer es creare objeto.name = 1, objeto.name = 2, objeto.name = 3… Igual este código ayuda a explicarnos mejor:

 

var cosa:Sprite;
 
cosa = new Sprite();
cosa.name = «arbol» + 1;
addChild( cosa );
 
cosa = new Sprite();
cosa.name = «arbol» + 2;
addChild( cosa);


Y así ya creamos dos objetos «cosa» con nombres «arbol1» y «arbol2», es sencillo meter esto dentro de un ciclo «for» e instanciar cientos de objetos cambiando el nombre de manera incremental. Ya creado, ¿cómo lo acceso?… Pues fácil, con:

 

getChildByName( «arbol» + 1 )  


Y listo!… Ojalá te ayude y ahorre algo de tiempo haberte topado con este post. :-)

Extra: Recomiendo también ver este post para ahorrarse futuros dolores de cabeza.

Filed under: AS 3, Flash, Herramientas

Sobre juegos en Flash

Esto es taaaaaan cierto!

Filed under: Flash, Inspiracional

Prealoader con bitmaps – Cómo hacer operaciones sobre una imagen con código

Vean cómo se va generando la imagen conforme se va cargando un archivo!.

bitmap_preloader1

Este efecto esta genial, el ejemplo que viene con el tutorial es «básico» pero nos da una buena idea del manejo de bitmaps y podemos modificar la funcion para hacer las locuras que queramos. Pre-cargadores es una excelente aplicacion, pero en realidad hay muchas más áreas en las que es bueno saber hacer operaciones sobre bitmaps. :-)

Filed under: AS 3, Flash, Inspiracional, Tutoriales

Ligas + nuevas

Páginas

Archivos

El Autor

Tengo como 10 años trabajando profesionalmente en Flash. Todo comenzó cuando tomé un taller de Flash 2 y me dí cuenta que era el entorno perfecto para mí (devigner empedernido).
Disfruto los problemas de programación y disfruto diseñar y crear experiencias interactivas visuales chidas. Flash era la mezcla perfecta para mí, y se ha mantenido siéndolo por todo este tiempo. En aquel entonces ni se mencionaba "ActionScript", hoy en día ActionScript 3 no deja de sorprenderme... Cada día hay algo más que aprender y la neta: que chido. :-D
-El Autor: Hector Padilla -

View Héctor Padilla's profile on LinkedIn