Sin categoría

Crea un campo de fútbol como escenario del juego.

Share on TwitterShare via email


Esta entrada pertenece a ActionScript 3 – Guía para Principiantes.

Para concluir con este capítulo, vamos a crear un escenario algo más elaborado: un campo de fútbol.

La clase CampoFutbol

Dentro de la carpeta escenario vamos a crear una nueva clase que llamaremos CampoFutbol cuyo código será:

package mi.pong.escenario
{
 import com.senocular.utils.KeyObject;
 import flash.display.GradientType;
 import flash.display.Sprite;
 import flash.display.Stage;

 /**
  * ...
  * @author ASL
  */
 public class CampoFutbol extends Escenario
 {
  private var verdeG1_1:uint = 0x01B101;
  private var verdeG1_2:uint = 0x02D202;
  private var verdeG2_1:uint = 0x25FC25;
  private var verdeG2_2:uint = 0x00FB00;

  public function CampoFutbol(stage:Stage, keyObject:KeyObject)
  {
   super(stage, keyObject);
  }

  public override function creaEscenario()
  {
   var nZonas:uint = 8;
   var anchoZona:Number = stageRef.stageWidth / nZonas;

   for (var i:uint = 0; i < nZonas; i++) {
    var zona:Sprite = creaZona(i, anchoZona);
    zona.y = 0;
    zona.x = (stageRef.stageWidth / nZonas) * i;
    addChild(zona);
   }

   dibujaLineas();
  }

  private function creaZona(i:uint, anchoZona:Number):Sprite
  {
   var zona:Sprite  = new Sprite();
   if ( i % 2 != 0)
    zona.graphics.beginGradientFill(GradientType.LINEAR, [verdeG1_1, verdeG1_2], [1, 1], [0, 255]);
   else
    zona.graphics.beginGradientFill(GradientType.LINEAR, [verdeG2_1, verdeG2_2], [1, 1], [0, 255]);

   zona.graphics.drawRect(0, 0, stageRef.stageWidth / 8, stageRef.stageHeight);
   zona.graphics.endFill();
   return zona;
  }

  private function dibujaLineas():void
  {
   var margen:Number = 15;
   var anchoLinea:Number = 5;
   var linea:Sprite = new Sprite();
   linea.graphics.beginFill(0xFFFFFF);
   // Línea del centro
   linea.graphics.drawRect(stageRef.stageWidth / 2 - anchoLinea / 2, margen, anchoLinea, stageRef.stageHeight - 2 * margen);
   // Líneas de fondo
    // Izquierda
   linea.graphics.drawRect(margen, margen, anchoLinea, stageRef.stageHeight - 2 * margen);
    // Derecha
   linea.graphics.drawRect(stageRef.stageWidth - margen - anchoLinea, margen, anchoLinea, stageRef.stageHeight - 2 * margen);
   // Líneas de banda
    // Superior
   linea.graphics.drawRect(margen, margen - anchoLinea, stageRef.stageWidth - margen * 2, anchoLinea);
    // Inferior
   linea.graphics.drawRect(margen, stageRef.stageHeight - margen, stageRef.stageWidth - margen * 2, anchoLinea);
   linea.graphics.endFill();
   addChild(linea);

   // Círculo central
   var centro:Sprite = new Sprite();
   var radioCentro:Number = stageRef.stageHeight / 3;
   centro.graphics.beginFill(0xFFFFFF);
   centro.graphics.drawEllipse(stageRef.stageWidth / 2 - radioCentro / 2, stageRef.stageHeight / 2 - radioCentro / 2, radioCentro, radioCentro);
   centro.graphics.drawEllipse(stageRef.stageWidth / 2 - radioCentro / 2 + anchoLinea, stageRef.stageHeight / 2 - radioCentro / 2 + anchoLinea, radioCentro - anchoLinea*2, radioCentro - anchoLinea*2);
   centro.graphics.endFill();
   addChild(centro);
  }

 }

}

Dos cosas importantes en este código:

- La clase CampoFutbol es heredera de la clase Escenario, con lo cual, hereda todas sus funciones. Sin embargo, nosotros queremos redefinir una de las funciones: creaEscenario, porque queremos que la creación de este escenario sea distinta a la del padre. Para realizar este cometido utilizamos la palabra clave override, que “sobreescribe” al método del padre. Es decir, será este método el que se utiliza y no el heredado.

- Todas las funciones utilizadas en el atributo graphics corresponden a métodos de dibujado que proporciona Flash. Podéis encontrar más información aquí.

Ahora, para verlo en acción, ve a la clase Main y cambia la clase al escenario:

var escenario:Escenario = new CampoFutbol(stage, key);

Puedes encontrar los archivos de este proyecto terminado en el siguiente capítulo.

Anterior Índice Siguiente
Share on TwitterShare via email

Otras entradas que podrían interesarte

Tags: ,

3 comentarios

  1. Victor 13/04/2012 at 22:46 | Permalink

    Todo tu código lo he pasado a word para poderlo imprimir y probar. He hecho algunas pequeñas cosas en AS2 como un space invader y un pacman, pero le vengo dando vueltas y largas a aprender AS3. Valga tu programa para mi “inicio”. Gracias.

  2. Victor 13/04/2012 at 22:47 | Permalink

    equivoque el correo lo siento. ahora si es correcto.

Un Trackback

  1. Por Conclusión y archivos fuente del Pong 1.1 en 09/02/2012 a las 22:19

    [...] Anterior [...]

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.