Dibujo de formas mediante los métodos incorporados

Por comodidad, a la hora de dibujar formas comunes, como círculos, elipses, rectángulos y rectángulos con esquinas redondeadas, ActionScript 3.0 dispone de métodos para dibujar esas formas automáticamente. Más concretamente, son los métodos drawCircle(), drawEllipse(), drawRect(), drawRoundRect() y drawRoundRectComplex() de la clase Graphics los encargados de realizar dichas tareas. Estos métodos se pueden usar en lugar de lineTo() y curveTo(). Sin embargo, hay que tener en cuenta que sigue siendo necesario especificar los estilos de línea y relleno antes de llamar a estos métodos.

A continuación, se vuelve a usar el ejemplo del dibujo de cuadrados rojos, verdes y azules con una altura y una anchura de 100 píxeles. Este código utiliza el método drawRect() y, además, especifica que el color de relleno tiene un valor alfa del 50% (0.5):

var squareSize:uint = 100; 
var square:Shape = new Shape(); 
square.graphics.beginFill(0xFF0000, 0.5); 
square.graphics.drawRect(0, 0, squareSize, squareSize); 
square.graphics.beginFill(0x00FF00, 0.5); 
square.graphics.drawRect(200, 0, squareSize, squareSize); 
square.graphics.beginFill(0x0000FF, 0.5); 
square.graphics.drawRect(400, 0, squareSize, squareSize); 
square.graphics.endFill(); 
this.addChild(square);

En un objeto Sprite o MovieClip, el contenido de dibujo creado con la propiedad graphics siempre aparece detrás de todos los objetos de visualización secundarios contenidos en el objeto. Además, el contenido de la propiedad graphics no es un objeto de visualización independiente, de modo que no aparece en la lista de un elemento secundario de un objeto Sprite o MovieClip. Por ejemplo, el siguiente objeto Sprite tiene un círculo dibujado con su propiedad graphics y un objeto TextField en su lista de objetos de visualización secundarios:

var mySprite:Sprite = new Sprite(); 
mySprite.graphics.beginFill(0xFFCC00); 
mySprite.graphics.drawCircle(30, 30, 30); 
var label:TextField = new TextField(); 
label.width = 200; 
label.text = "They call me mellow yellow..."; 
label.x = 20; 
label.y = 20; 
mySprite.addChild(label); 
this.addChild(mySprite);

Hay que tener en cuenta que el objeto TextField aparece sobre el círculo dibujado con el objeto graphics.