API de dessin en AS3
Avec la béta de Flash 9 et autre Flex, il est grand temps de mettre le nez dans l’AS3. Et pour commencer je vous propose de reprendre le billet AS2 sur l’api de dessin, et de migrer le code en AS3… en attendant de passer tout ca dans une classe …
Avant de démarrer…
…vous pouvez jeter un oeil sur le billet AS2 concernant l’api de dessin ! Il faut aussi savoir certaines petites choses concernant l’AS3 : « _x » devient « x », « _root » devient « root », etc…
La création de forme en AS3
la création dynamique de forme en AS3 nécessite 2 classes : Shape et Graphics, distribué dans le package flash.display. Contrairement à l’AS2, les méthodes de création de forme (lineStyle, moveTo, …) ne sont plus ratachées à l’objet MovieClip, mais à un objet Graphics. L’objet Shape est le « conteneur ». Il suffit, en AS3, d’invoquer la méthode addChild (:displayObject) pour afficher l’objet sur la scène.
Code source
// Importation des classes Shape et Graphics
// pour la création de forme
import flash.display.Shape;
import flash.display.Graphics;
// Création du conteneur de la forme dynamique
var form:Shape = new Shape();
// Déclaration du tableau
var tab:Array = new Array();
// Ajout des Object vecteur
tab = [
{px:200, py:300, cx:200, cy:200},
{px:300, py:400, cx:200, cy:400},
{px:450, py:450},
{px:400, py:300, cx:400, cy:400},
{px:450, py:220},
{px:300, py:200, cx:400, cy:200},
{px:150, py:150, cx:250, cy:200}
];
// Non obligatoire : efface toutes formes préalablement
// créer avec l’api de dessin
form.graphics.clear();
// Définition de la ligne (taille=1, couleur=#333333, alpha=100)
form.graphics.lineStyle(1, 0x333333, 100);
// Définition du fond (couleur=#F7F7F7, alpha=100)
form.graphics.beginFill(0xF7F7F7, 100);
// Définition du point d’origine
form.graphics.moveTo(tab[tab.length-1].px, tab[tab.length-1].py);
// Passage dans les lignes du tableau
for (var i=0; i<tab.length; i++)
{
// Si le point de control cx n'est pas définit,
// on applique un lineTo, sinon un curveTo
tab[i].cx == undefined ?
form.graphics.lineTo(tab[i].px, tab[i].py) :
form.graphics.curveTo(tab[i].cx, tab[i].cy, tab[i].px, tab[i].py);
}
// Définit la fin de la forme
form.graphics.endFill();
// Affichage de l'object form
addChild(form);
Quelques liens pour aller plus loin :
- Migration AS2 vers AS3
- liveDocs flash.display.Graphics : la classe Graphics AS3

Français