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 |
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
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.