Skip to content


AS3 – Uso de Packages y eventos de ratón simples

Bueno, no sé si comprendisteis nada de lo que dije ayer sobre los packages, pero aquí va un ejemplo completo.

Ejemplo

Fichero: com\lah\Trace.as

1
2
3
4
5
6
7
8
package com.lah {
   public class Example{
      public function Example()
      {
           trace("Example");
       }
   }
}

Fichero: trace.fla

1
2
3
import com.lah.*;
// El * importa todas las clases de la carpeta
var myExample:Example = new Example();

A que mola, eh? Bueno, pues ahora solo habeis visto la puntita del iceberg….

¿Porque usamos import?

Porque realmente un package es como una gran clase que engloba otras más pequeñas.

Por ejemplo:

galeria ( package )
galeria/botonera ( clase )
galeria/botonera/boton ( subclase )
galeria/thumbnail ( clase )
galeria/thumbnail/marco ( subclase )
galeria/thumbnail/fondo ( subclase )
galeria/thumbnail/imagen ( subclase )
galeria/thumbnail/cargador ( subclase )

¿Hacemos algo más que un trace?

Venga pues, vamos a probar de colocar un clip en el escenario creado manualmente.

Os vais directamente a la linea de tiempo y creais un clip. En los datos que os pide existe un campo llamado clase, pues allí colocais el siguiente nombre clipA

Ahora, pulsais F9 y copiad este código.

1
2
3
4
5
6
7
// Instanciamos la clase
var clip1:clipA = new clipA();
// Inicializamos propiedades ( fijaros que no llevan _propiedad )
clip1.x = 100;
clip1.y = 100;
// Añadimos al Stage el clip
addChild(clip1);

¿Pero esto no va dentro de un package?

Los packages nos sirven para dejar más limpia la linea de tiempo y tener mejor organizado el código, pero no son de obligado uso. Sin embargo, el objetivo de todas estas explicaciones es acabar usando packages.

!!Quiero clickar!! !!Quiero clickar!!

Vale, pues ahora tienes que pensar un poquito más, así que necesitamos una clase para gestionar el evento que vas a realizar sobre el objeto clip1. Para ello debes crear en la misma carpeta donde esta el fla un archivo llamado clipA.as y dentro de él, el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   // Definimos la clase
   public class clipA extends MovieClip
   {
      public function clipA()
      {
         addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);
      }
      private function mouse_down(event:MouseEvent):void
      {
         trace("CLICK!");
      }
   }
}

El código que tienes en la línea de tiempo lo debes mantener tal cual está, ya que lo necesitamos para vincular en el escenario el clip que hemos definido bajo la clase clipA.

¿Has ejecutado ya?

Supongo que sí, y si pulsas encima del clip, se mostrará un trace con el mensaje CLICK!!, aps, si, tienes razón, te falta la manita y el dedito, pero de momento ya tenemos un evento asociado al objeto por si no os habeis dado cuenta.

Vayamos un paso más allá

Ahora quiero evitar definir tanto código en la línea de tiempo ( que es el principal objetivo del AS3 ), asi que vamos a crear una nueva clase en el mismo package que nos va a permitir manipular el escenario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package
{
   import flash.display.MovieClip;
   //
   public class Main extends MovieClip
   {
      private var _root:MovieClip;
      private var clip1:clipA = new clipA();
      //
      public function Main(ruta:MovieClip)
      {
         _root = ruta;
         //
         clip1.x = 100;
         clip1.y = 100;
         _root.addChild(clip1);
      }
   }
}

Y, para que funcione, en el primer fotograma de vuestro archivo FLA:

1
var _root:Main = new Main(this);

Mola!!! ¿pero ya esta?

Se podria y se puede mejorar. Básicamente todo lo que os he explicado esta extraido ( y adaptado a mi blog ) de la web Codigo.ActionScript

Posted in AS3.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.