JK994 escribió:
perdón pero seque, jeje, no entiendo muy bien, el uso de las clases
No es cierto, llevas usando Clases toda la vida, lo que ocurre es que no lo has hecho conscientemente. Una Clase es la Clase MovieClip, la Clase Array, la Clase Math.... Así que vale ya de decir que no has usado Clases...
Me dices que no has hecho es crear una clase propia extendiéndola de otra. Reconozco que suena complicado, pero no lo es tanto. Cuando tienes un MovieClip (uno sencillo que sea un círculo). Eso es una Clase que extiende de MovieClip. Sí, es un MovieClip pero no es sólo un MovieClip porque tiene un circulo. ¡Has creado una Clase nueva que extiende de MovieClip!
Vale, (aquí te lo reconozco) Sí es cierto que la idea de clase significa de agún modo escribir código dentro del símbolo (eso se ha hecho desde Flash 5). De modo que cada vez que hacíamos un attachMovie, tenía todos los comportamientos del Símbolo. En AS.3 la OOP sale casi sin querer porque casi te obligan a ello.
JK994 escribió:
se que mensionaste algo de que si no uso clases, debo de escribir todo seguido, pero no entiendo, que parte de eso tengo q escrbiri seguido, gracias.
Pues me expliqué como un libro cerrado
Suena un poco complicado y todo viene de una disyuntiva.
1.-Podemos escribir el código en un frame de la película principal (o en un .as y ponemos en ese frame)
Código ActionScript :
import fichero.as
2.-Podemos decirle a nuestra película que procede de una "clase de documento" (en las propiedades de la película) y crear ese fichero .as (que tiene que llamarse igual que la "clase de documento").
Sí, tenemos las dos opciones. Aunque Flash lo va a traducir siempre a la segunda forma. Imaginemos algo sencillo, una película con un MC dentro con nombre de instancia "mimc" y código en el primer frame
Código ActionScript :
var variable:Number=100;
mimc.vel=10;
mimc.addEventListener(Event.ENTER_FRAME,mover)
function mover(e:event):void{
mimc.x+=mimc.vel;
}
Es "lo mismo" que, si le diéramos como clase de documento "Main" y escribiéramos en un fichero main.as
Código ActionScript :
package{
Class Main extends MovieClip{
//parte de declaración de variables
public var variable:Number=100;
public var mimc:MovieClip;
function Main(){
//parte de poner los MCs en el stage
mimc=new MovieClip();
mimc.x=100; //<--el valor que tuviera en tiempo de diseño
mimc.y=100; //<--el valor que tuviera en tiempo de diseño
addChild(mimc);
//código que antes estaba en el frame
mimc.vel=10
mimc.addEventListener(Event.ENTER_FRAME,mover)
}
private function mover(e:event):void{
mimc.x+=mimc.vel;
}
}
}
Lo del package es algo que nos tenemos que tragar -dá para más de un post-
Sí, nuestra "clase de documento" extiende de MovieClip, pero no es más que eso
La parte de declarar las variables queda FUERA de esa funcion Main (que se llama constructor). Observa que están tanto las variables que declaramos en el frame como unas variables que se corresponden con el "nombre de instancia" de los MovieClips, y que todas son "public".
El resto iría en la función Main (en la función constructora). Lo que pasa es que las funciones que utilizamos las dejamos fuera.
Por eso, si tenemos el código de una "Clase de documento", la podemos poner en un frame "todo seguido", que quiere decir, sin declarar package, y sin función constructora. Tomemos aliento, porque no es fácil de entender a la primera y es importante conocer cómo funciona Flash y cómo compila Flash. Y es importante que nos vayamos acostumbrando a crear nuestro fichero main.as y a decirle a nuestra película que tiene como clase de documento Main.
JK994 escribió:
respecto a los códigos que luego me proporcionaste, usan clases, y pues, si es necesario, muchas gracias, pero quiero buscar la forma de hacerlo lo mas compacto posible
ES compacto. De hecho es el modo de hacer las cosas más compactas y reutilizables. Sí es cierto que tienes que tener un .as por cada Clase que crees (al principio suena ilógico -y puede que lo sea-, pero el .swf que se crea es único, aunque es cierto que, si quieres usar deberás, o bien añadir las clases al proyecto -copiándote todos los .as (menudo rollo) o importarlo con un import. ¡¡Sólo con un import podrás usar lo que has hecho antes!! (antes nos teníamos que importar las librerías, compartirlas y mil demonios más)
No sé cómo convencerte de la "bondad de las clases". Sí me gustaría que no nos asustara el nombre, porque es sólo eso, un nombre. ¿que tenemos más ficheros .as? Personalmente a mí me gusta más esta idea que ir buscando código desperdigado por todos los MCs, aunque para gustos están los colores -pero ¡ojo! que nos vamos a tener que ir acostumbrando al "gusto Adobe"-
JK994 escribió:
y una pregunta mas, cuando creo el loader, y si lo creo dentro de un movieclip, al arrastrar ese movieclip, el loader también lo hace?
A esto es más fáicl responder: Sí, es como cuando teníamos un MC dentro de otro MC, cuando arrastramos el MC "contenedor" todo lo que hay dentro se mueve también