Manejo de eventos y creacion de formas en ActionScript 3.0
Desarrollo de una clase en AS3, con el título de DiversosCirculos , variables en AS3 es necesario declararlas previamente con la palabra reservada “var” y especificar el tipo de dato al que pertenecen
Se declara un array de colores en hexadecimal, al ser un atributo con el ambito privado no es accesible fuera de la clase y necesitamos para su tratamiento de un método de la clase público. Que recorre el array y va posicionando cada uno de los círculos, en una posición x e y distinta segun el iterador del bucle. Una de las diferencias con AS2 es que antes teníamos elemento._x en la nueva versión se sustituye por elemento.x
Al igual que otros lenguajes de programación de alto nivel como Java y C# en AS3.0 tenemos un manejador de eventos, Antes en la versión 2.0 de AS teníamos movieclip.tipodeevento = function ( )
eso en AS3 ha cambiado por addEventListener(tipodeevento, funcionManejadoradelEvento );
Otra incorporación importante es la clase Sprite que en AS2.0 no aparecía y que en posteriores Post se comentará de forma más detallada …
Código de ejemplo DiversosCirculos.as
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package { import flash.display.Shape; import flash.display.Sprite; import flash.events.MouseEvent; /** * ... * @author DefaultUser (Tools -> Custom Arguments...) */ public class DiversosCirculos extends Sprite { private var colores:Array = [ 0xFF0000, 0x990000, 0x660000, 0x00FF00, 0x009900, 0x006600, 0x0000FF, 0x000099, 0x000066, 0xCCCCCC ]; public function DiversosCirculos() { //creamos diez circulos y los colamos de forma descendente for ( var i:int = 0; i < 10 ; i++) { var auxiliar :Shape = crearCirculo( colores[i], 20); auxiliar.x = (i * 15); auxiliar.y = (i*10) + 20; addChild(auxiliar); } this.addEventListener(MouseEvent.CLICK, cambiar); } private function cambiar(event:MouseEvent):void { //recuperamos el objeto en la posicion indicada mediante addChildAt(indice) //establecemos la profundidad setChildIndex( getChildAt(0), numChildren -1); } private function crearCirculo(color:uint, radio:Number ):Shape { var forma:Shape = new Shape(); forma.graphics.beginFill(color); forma.graphics.drawCircle(20, 0, radio); forma.graphics.endFill(); return forma; } } } |