Sin categorテュa

Diseテアa grテ。ficamente el pong del juego y entiende el concepto de herencia en programaciテウn orientada a objetos. Finalmente, aテアade el pong a la escena.

Share on TwitterShare via email


Esta entrada pertenece a ActionScript 3 – Guテュa para Principiantes.

Herencia en ActionScript 3

Diseテアo grテ。fico de nuestro pong

Antes de explicar el concepto de herencia, vamos a colocar, por fin, nuestro pong en la ventana Flash. Lo primero que necesitamos es una representaciテウn grテ。fica para テゥl. Con la ventana Flash activa: menテコ Insertar -> Nuevo sテュmbolo… En el diテ。logo que nos aparece, elegimos como nombre para el sテュmbolo Pong. Y en el tipo, Clip de pelテュcula. Puedes elegir el diseテアo que quieras. Aquテュ, el que he seguido yo:

Creando nuestro pong

1) Dibujamos un rectテ。ngulo con la Herramienta Rectテ。ngulo (R)

2) Con la herramienta de Tansformaciテウn Libre (Q), con Ctrl+Shitf pulsados, clickamos sobre la esquina inferior derecha del rectテ。ngulo y arrastramos hacia arriba, hasta conseguir la forma adecuada.

3) Con todo lo que acabamos de dibujar seleccionado, en la ventana Color (Shift + F9) utilizamos los siguientes valores:

Color para el Pong

Un テコltimo detalle importante que has de tener en cuenta, es que el grテ。fico ha de estar lo mテ。s centrado posible en el clip de pelテュcula. Si te fijas, una pequeテアa cruz es la que marca este centro. Si tu pong no estuviera centrado, traslテ。dalo de modo que su centro (que se marca cuテ。ndo tienes seleccionada la Heramienta de Transformaciテウn Libre (Q)), quede alineado con el del clip.

Enlazando la clase Pong con su representaciテウn grテ。fica

Nuestro objetivo es que la clase Pong que tenemos definida en el archivo Pong.as estテゥ asociada a la representaciテウn grテ。fica que le hemos creado. Para ello debemos seguir dos pasos:

1) Especificar, en ActionScript, que la clase Pong tiene una representaciテウn grテ。fica en forma de clip de pelテュcula (MovieClip). Y hacemos esto mediante la herencia de MovieClip en la clase Pong.

 package mi.pong
{

 import flash.display.MovieClip;

 /**
  * ...
  * @author ASL
  */
 public class Pong extends MovieClip
 {
  private var vy:int;

  public function Pong()
  {
   trace("ツ。Objeto de la clase Pong creado!");
  }

  public function mover():void
  {
   // Vacテュo. Aテコn no sabemos cテウmo vamos a mover nuestro Pong
  }

 }

}

- public class Pong extends MovieClip: Aquテュ estamos especificando que la clase Pong hereda de la clase MovieClip de Flash. Es decir, que Pong, ademテ。s de tener sus atributos y sus mテゥtodos propios, ademテ。s tambiテゥn hereda todas las caracterテュsticas MovieClip, entre ellos, la representaciテウn grテ。fica. MovieClip es la clase que Flash utiliza para las representaciones grテ。ficas con lテュnea temporla.

2) Indicar que el sテュmbolo Pong que hemos creado en Flash estテ。 relacionado con la clase Pong del archivo Pong.as. Para ello, en la ventana Biblioteca, click derecho sobre el sテュmbolo Pong -> Propiedades, y en caso de no estar extendido, pulsamos Avanzado. Ahテュ, selecionamos Exportar para ActionScript. En clase, la clase con la que queremos vincular el sテュmbolo (y su ubicaciテウn en su respectivo paquete) “mi.pong.Pong”, y en clase base, si no estuviera ya, “flash.display.MovieClip”.

Tras estos dos pasos, cada vez que creemos un objeto de la clase Pong, este objeto tendrテ。 asociado el sテュmbolo Pong que creamos al inicio del capテュtulo.

Aテアadiendo el pong a la escena

Ahora cobra sentido aquel “extends MovieClip” que aテアadimos a la clase Main. El documento Flash es, en esencia, un clip de pelテュcula, un MovieClip.Y, al igual que con el Pong, a este MovieClip podemos asociarle una clase ActionScript, en este caso, Main.

Por ser Main la clase que representa al MovieClip principal de nuestro archivo Flash, es テゥl quiテゥn controla todo lo que sucede en la parte grテ。fica de la aplicaciテウn. Por eso debe ser en テゥl en el que aテアadamos nuestro pong.

package
{
 import flash.display.MovieClip;
 import mi.pong.Pong;

 /**
  * ...
  * @author ASL
  */
 public class Main extends MovieClip
 {

  public function Main()
  {
   var miPong:Pong = new Pong();
   addChild(miPong);
   miPong.x = stage.stageWidth / 2;
   miPong.y = stage.stageHeight / 2;
  }

 }

}

- addChild(miPong): aテアadimos a nuestra pelテュcula miPong.

- miPong.x = stage.stageWidth / 2: “x” es un atributo heredado desde MovieClip. Indica la posiciテウn, en el eje de las x, del objeto dentro de la pelテュcula. stage.stageWidth indica el ancho de la pelテュcula. Lo dividimos entre 2 para centrar. Anテ。logo para miPong.y.

Si ahora pruebas la pelテュcula, verテ。s a nuestro Pong, en el centro.

ツソCuテ。l es la idea bテ。sica tras la herencia?

La herencia nos permite crear clases generales de las que poder heredar en clases mテ。s concretas. Por ejemplo, podrテュamos tener una clase padre Transporte, con atributos generales como “velocidad” o “precio” y unas clases heredades, mテ。s concretas, como Aviテウn, Tren, Automテウvil

Para especificar que una clase hereda de otra utilizamos la palabra clave extends:

public class miClase extends ClasePadre
{
 // Definiciテウn de clase
}

En capテュtulos posteriores revisaremos esta definiciテウn y todas sus aplicaciones. De momento, nos vale con saber que para poder asociar clases ActionScript con sテュmbolos Flash necesitamos que テゥstas hereden de MovieClip.

Anterior テ肱dice Siguiente
Share on TwitterShare via email

Otras entradas que podrテュan interesarte

  • No sテゥ encontrテウ ninguna entrada.

7 comentarios

  1. Viktor 23/02/2011 at 17:08 | Permalink

    Hola de nuevo soy el torpe de la clase, sobre Errores
    C:\****\****\pong\src\ob\pong\Pong.as, Lテュnea 8 1084: Error de sintaxis: se esperaba leftparen antes de extends.

    si le tira un error asi i estais desesperados, porque mirais al codigo y parece bien, o que esis ya a punto de reistalar Flash, (lo pongo por si se encuentra alguien tan torpe como yo) – MIRAR BIEN EL CODIGO

    este error tira cuando intentais extender una function , asi que mirar que ponga
    public class Pong extends MovieClip{
    y no
    public function Pong extends MovieClip(){

    sinceramente , yo tuve un monton de esos errore en mi tres dillas de aprendisaje de Actionscript, y creo que los volvere a cometer.,

    P.S. para autor , donde aprendes Actionscript, recomiendas algun libro bueno?
    y una pregunta .
    Es posible empiesar ganar dinero en 2 semanas con esto?
    que pa mi es como casi urgente.

    • テ]gel Serrano 23/02/2011 at 17:36 | Permalink

      Hola,

      Aprendテュ Action Script 3 siguiendo tutoriales por Internet. La mayorテュa de las veces poniendo en Google lo que querテュa hacer + action script 3 o flash.

      Con respecto a lo de ganar dinero en 2 semanas, lo veo improbable. Pero depende de tu capacidad de aprendizaje y de encontrar un cliente que requiera tus servicios, supongo.

      Un saludo

  2. Adrian 21/09/2011 at 09:45 | Permalink

    Hola Angel:
    Muy bueno el tuto, hicistes que se me vaya el miedo a las clases y lo primero que hice despues de leer el tuto, es hacer una aplicacion en flash por medio de clases que desarrolle en el flashdeveloper .
    Realmente te agradesco y si tenes mas senialamelos por favor.
    Aprovecho esta oportunidad para formularte una pregunta. En la app ya mencionada mando mails desde flash por medio de php, mi problema radica en que debo hacerlo en un idioma diferente al ingles o espaniol y necesito agregar en el php encoding. Alguna ayuda seria muy agradecida.

    Que tengas un buen dia
    Adrian

    • テ]gel Serrano 29/09/2011 at 21:56 | Permalink

      Hola, Adriテ。n

      Me alegro que te sirviera el tutorial. Me temo que no puede ayudarte con el problema de php. Nunca he hecho nada relacionado.

      Un saludo

  3. Juan 19/12/2011 at 11:13 | Permalink

    Hola buenas, llevo como una hora buscando la soluciテウn porque no se ve mi simbolo en pantalla y la verdad es que no entiendo nada. Estテ。 todo correcto e identico a como lo as puesto. Lo テコnico raro que he visto a sido que cuando introduzco “flash.display.MovieClip” en la clase base, me pone que es nativa y no se puede editar.

    Esta todo igual a lo que pones, es mas, no me da ningテコn error, pero no sale el simbolo en la pantalla de ejecuciテウn…

    Gracias y muy buen tutorial!!

2 Trackbacks

  1. [...] Anterior [...]

  2. [...] Siguiente [...]

Dejar un comentario

Cada comentario que dejas es una bofetada a uno de mis familiares o amigos. Suscribirte al RSS, ya ni te cuento. (ツソPor quテゥ?)

Tu email nunca serテ。 publicado ni compartido.