API de dessin en AS3
Par fab, dans [Dev] Flash / Flex / AIR... # 27Avec 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

Commentaires
1. Le lundi 29 septembre 2008 à 22:19, par Guillaume
2. Le mardi 4 novembre 2008 à 16:53, par Dermiste
Allez soit pas timide ! Dis quelque chose...