Programa AS3 sin morir en el intento

Anda te invito a echarle un ojo a esto, yo sé que comenzar con un lenguaje puede ser frustrante y hasta se pierde uno que otro ligue por eso.

Comienza desde cero pero comienza bien, aquí habrá un poco de ayuda, después podrás saltar a sitios más especializados.

Búsqueda en éste blog solamente

Seguidores y Fans

jueves, 8 de octubre de 2009

Flash desde cero en español

Lo primerísimo, arramca flash y ¿qué hay?


Primero, el la barra de menú



Segundo, por lo general comienza la pantalla de bienvenida, desde la que podemos crear documentos o abrir docs recientes, etc.



Podemos elegir donde dice Crear Nuevo y escoger Archivo Flash ActionScript 3.0 ó en la barra de menú>Archivo>Nuevo, esta última tiene una ventana con dos opciones: General y Plantillas.


General. Sirve para elegir un tipo de documento cualquiera.



Plantillas. Como para cosas concretas, juegos para celular, etc (la desconozco por completo).



Ambas opciones crean un nuevo documento! Lo coloca en una nueva ventana (por lo general). Casi siempre se compone esta ventana de un Timeline y la parte del Documento.



Antes de continuar, hay que guardar. Clic en barra de menú>Archivo>Guardar, y esto nos pone la ventana para guardar. Asegúrate de que esté elegida la opción "Documento de Flash CS3 (*.fla)". Nómbralo como "Proyecto.fla" nada más para que concuerde con este tutorial.



Continuando la explicación, veremos la barra del Timeline. Si no está presente el timeline, clic en barra de menú>Ventana>Linea de tiempo.



Teniendo el Timeline o Linea de tiempo, están presentes las Capas o Layers del lado izquierdo y del lado derecho los Frames. Del lado derecho, bajo las capas, están las opciones para crear nuevas capas o borrar la seleccionada. En los frames... ahora no vale la pena dar detalles.




Ahora vamos a lanzar las herramientas, sirven para

seleccionar objetos

seleccionar paths

seleccionar con laso

dibujar paths

crear cajas de texto

crear líneas, crear figuras

dibujar con lápiz, pintar

poner color a contornos de figuras

poner color de relleno a figuras

seleccionar muestra de color

borrar

la manita es para mover el documento en la mesa de trabajo

hacer zoom

seleccionar un color de contorno

seleccionar color de relleno

los de abajito ni los conozco.


Selecciona la herramienta de dibujo de figuras y haz un cuadrito en el stage (el stage es el área del documento y es lo que se verá en la pantalla cuando exportes). Mi cuadrito es rojo y tiene un alpha como de 0.5 creo.



Me ahorraré por tiempo algunos pasos, pero ahora selecciona la herramienta de Selección de Objetos (la flechita negra) y dale doble clic al cuadrito. Doble clic! uno solo seleccionaría solo el relleno. Luego ve a barra de menú>Modificar>Convertir en símbolo. Aparece la ventana como la que sigue. Un símbolo equivale en director a los casts supongo, pero son muy muy diferentes la verdad. Imagina los símbolos como objetos, les llamaremos MovieClips o Clips de Película (puede haber más pero este será MovieClip)



Dale el nombre, como viene en este ejemplo "cuadrito" y que sea de tipo Clip de Película (MovieClip).



En el stage la figura que tenías seleccionada ha cambiado, ya no es un "shape" sino un MovieClip. Dale un cli, uno solo! dos clics te llevarían a la edición de ese MovieClip, donde tendrías chance de modificar la figura, estos cambios se propagarían...). Luego ve a barra de menú>Ventana>Propiedades>Propiedades.



Estoy que me cago y si pudiera llevaría la compu al baño. Bueno sigamos, el panel de Propiedades te deja modificar varias cosas, tanto para figuras, líneas, MovieClips, botones (Button) y etc.



Ponle un nombre al MovieClip que seleccionaste.



¿Qué está pasando? Ahora tienes en el Stage un objeto de tipo MovieClip que se llama "cuadrito_mc". Y las acciones ¿cómo pues? aaah eso viene en un momento.

Ya tienes seleccionado tu MovieClip, ahora, vete al Timeline y selecciona el frame donde se encuentra el cuadrito.



Ya lo seleccionaste (el frame) y dale option+clic para que te aparezca el menú de opción de ese frame:



Te aparece el panel de las acciones. Así de rápido, tienes de un lado las acciones que puedes meter que vienen por default en flash y del lado derecho el código de tu frame. Si está cerrado del lado izquierdo ábrelo dándole clic a la como flechita que está en medio de la ventana de ese lado izquierdo. Escribe en el código (lado derecho) lo siguiente. Si ves que al principio de las líneas de código que te digo poner un número, no lo pongas, es tu referencia de qué número de línea es.:

  1. trace("Timeline> "+cuadrito_mc)


Oh sí, mi código aparece en letras verdes sobre negro. Eso se modifica en las preferencias de flash.


Ahora como me estoy echando el fast track tutorial, escribe en el código de modo que quede así:

  1. trace("Timeline> "+cuadrito_mc)
  2. import flash.display.MovieClip
  3. cuadrito_mc.alpha=.25
Lo que le estás diciendo es que
  1. envíe un mensaje a la ventana output (aparece cuando exportas) que diga "Timeline>" y te diga qué es cuadrito_mc (y te va a decir que es un objeto MovieClip cuando exportes tu documento).
  2. que importe de la librería de Clases (hazle wiki para que te enteres mejor qué es una clase), una que se llama MovieClip (es del mismo tipo que el cuadrito convertido en símbolo y que quedó como Clip de Película) y que se localiza en el paquete display, paquete que a su vez se encuentra en el paquete flash. Por ahora esto no hace nada más, solo la importa y ya, luego la ocuparemos.
  3. que al cuadrito en el timeline donde te encuentras que se llama "cuadrito_mc" se le cambie el alpha con un valor de 0.24. El alpha se maneja de cero a uno como máximo.
Ahora, dale doble clic a la palabra MovieClip en el código y dale option+clic para que aparezca el menú de opción y le das en Ver ayuda:



Te va a salir la ayuda. Casi nadie conoce esta ventana, por eso se venden inecesariamente libros de flash al por mayor. Como el cuadrito es de tipo MovieClip, podrás modificar las propiedades o llamar los métodos que aquí te describe la ayuda. Luego te explico bien otras cosas, por lo pronto échale un ojo a Paquete, Clase, Herencia y Subclases. Date una idea de qué pasa, como tip, como el cuadrito es de tipo MovieClip, y esta clase MovieClip tiene herencia en otras clases, también podrás modificar las propiedades o llamar los métodos que describen los "padres" de esta clase a la que pertenece el cuadrito.

Ya, me largo, luego le echare más a este tutorial fast track, la guía que todo nuevo flashero debería tener y dejar de comprarse tanto librito.

lunes, 29 de septiembre de 2008

Global Variables Over AS3 (The Definitive Code and Solution)

Hello There. You may read all this or pass to the end of this entrance.

Years have been passed before I was in close cercano with flash4, passing across AS1, AS2, reaching AS3 the past year (2008).

This new languaje (AS3) comes harder, faster, stronger than the last ones, but I still to short for many things, like mathematics. The hell how I would learn such things at high levels.

Anyway, there is a little thing I can give you. How to make globals in ActionScript3 and not die on the try.

A question: it is possible? Yes! its little different from the past and little the same from the past...

Can I use this "globals" in my Class objects? Yes!, in this try Ill give you 2 options but thad is possible!.

Im kidding you? Nope. I spent my hours in this and wasnt kidding.

All those who worked with flash 5 may understand this easy and those who know that all objects have something to do with the super duper class Object have the solution in hands!.

Sorry about my english, is too bad and I dont care at all so Im switching to spanglis but you keep on:

Échenle un ojo a esto:
var myObject=new Object()
... the Object class have something called "prototype". The prototype is... at the end the soul of every object. So the class Object have a soul. And the instance myObject have something to do with such soul. My good im not even religious... Anyway.

Lets thing on a method. Methods are something to do with the super duper class Function. But the Function class have something to do with...? the Object class. Because the Object class is the Adan and Eva of the human specie (doesnt arent the monkies? dont know).

// in your code
var myObject=new Object()
function method(){
trace("myObject: "+myObject)
}
method()
// end of code
Now, this is the very basic of a method call and scoping. "myObject" will be accessible by the method "method".

Now, suppose you want to acces myObject from any where at any time in any place. Remember the prototype? the soul of all? well, prototype is the referer of the superior properties and methods. Being the Adan&Eva of all, every child is conected to it. Every instance have something of this Object.

You can access prototype doing this:

Object.prototype

And you can print new properties and functions to the prototype with...? you know

// code
Object.prototype.myObject=String("Hola cabrones!") //Wich being String something of Object, Im sure this would cause some catastrophyc recursion.

// endofcode
// code, somewhere else before you declared "myObject"
trace("Sirve: "+this.myObject) // Sirve: Hola cabrones!
// endofcode

Now. 2 differences between

trace("Sirve: "+this.myObject)
and
trace("Sirve: "+myObject)

The seccond option will tell a undeclared variable error. In fact, you should not try to declare nothing global, I didnt pass this point yet... but "this" will call the prototype and return the value.

In this lab job, there is a thing, every new Object instance or subclass will copy the old values of Object but will adquire independence with the adquired values. May be my recomedation is to not to declare properties but methods that may re-read the new values.

// code
Object.prototype.myObject="Hola cabrones!"


trace("Sirve: "+this.myObject) // Sirve: Hola cabrones!

var myObjectInstance=new Object()

myObjectInstance.myObject="puta madre!"

trace("Sirve: "+this.myObject) // Sirve: Hola cabrones!
trace("No Sirve: "+myObjectInstance.myObject) // Sirve: puta madre!

// endofcode
So we can see differences wich we dont want.

but... Fuckind did it, I fucking did it right away! stop crying ladies and clean you tears, daddy is here:


In your very first frame (or if your swf is instance of some class, in the class constructor)

// ******* SubstanceMX *******
// CREATED BY SubstanceMX FOR THE WORLD, SEPT 2008.
// MADE IN MEKSYK
// THIS CODE IS FOR PUBLIC USE AND IF YOU HAVE IT,
// ALSO SHOULD SHARE WITH EVERY ONE WHO ASK! ALL
// IMPROVEMENTS YOU DO, LET ME KNOW AND MAKE THEM PUBLIC!
//
// globals initializer
Object.prototype.getGlobal=function (g){return Object.prototype[g]}
Object.prototype.setGlobal=function (g,v){Object.prototype[g]=v}
//
// ++++++++
// ********
// somewhere else
trace(this.getGlobal("gMyName")) // undefined
this.setGlobal("gMyName", "SubstanceMX") // void
trace(this.getGlobal("gMyName"))// SubstanceMX
this.setGlobal("gMyFun", function (){trace("Hola cabrones!")}) // void
this.getGlobal("gMyFun")() // Hola cabrones!"
//