Disegno di forme mediante metodi incorporati

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Per comodità, quando si disegnano forme comuni come cerchi, ellissi, rettangoli e rettangoli arrotondati, ActionScript 3.0 fornisce dei metodi che disegnano tali forme automaticamente. Si tratta dei metodi drawCircle(), drawEllipse(), drawRect() e drawRoundRect() della classe Graphics. Questi metodi possono essere utilizzati al posto dei metodi lineTo() e curveTo(). Notate tuttavia che è comunque necessario specificare gli stili di linea e di riempimento prima di chiamare questi metodi.

L'esempio seguente ricrea l'esempio dei quadrati rossi, verdi e blu con una larghezza e un'altezza di 100 pixel. Questo codice utilizza il metodo drawRect(), inoltre specifica che il colore di riempimento ha un valore 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);

In un oggetto Sprite o MovieClip, il contenuto del disegno creato con la proprietà graphics viene sempre visualizzato dietro tutti gli oggetti di visualizzazione secondari che sono contenuti nell'oggetto. Inoltre, il contenuto della proprietà graphics non è un oggetto di visualizzazione separato, pertanto non compare nell'elenco degli elementi secondari di un oggetto Sprite o MovieClip. Ad esempio, per l'oggetto Sprite seguente viene disegnato un cerchio con la relativa proprietà graphics e per esso è presente un oggetto TextField nell'elenco degli oggetti di visualizzazione secondari:

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);

Notate che l'oggetto TextField compare sopra il cerchio disegnato con l'oggetto Graphics.