Dans cette article (drawGraphicsData et drawPath), j’ai présenté plusieurs nouvelles méthodes et classes de l’API de dessin AS3 (Flash CS4), maintenant il est temps de détailler le fonctionnement, commençons par drawPath
.

Documentation :

Voici sa déclaration tel que reprise de la documentation :
public function drawPath(commandes:Vector.
commandes
: représente un tableau typé ne pouvant contenir que des entiers, chaque entier représente une commande de dessin, la liste des commandes accepté est représenté par les propriétés statiques de la classe GraphicsPathCommand
:
- NO_OP : int = 0 (ne rien faire)
- MOVE_TO : int = 1 (meme comportement que
moveTo()
) - LINE_TO : int = 2 (meme comportement que
lineTo()
) - CURVE_TO : int = 3 (meme comportement que
curveTo()
) - WIDE_MOVE_TO : int = 4 (pareil que
MOVE_TO
mais utilise 4 valeurs du tableaupositions
au lieu de 2) - WIDE_LINE_TO : int = 5 (pareil que
LINE_TO
mais utilise 4 valeurs du tableaupositions
au lieu de 2)
positions
: un tableau typé de nombre représentant les positions X et Y pour les commandes.
Attention : les données X et Y sont stockés a la suite dans le tableau (d’abord le X et à la ligne suivante le Y).
winding
: permet de spécifier la règle de remplissage pour les intersections ou chevauchement de zone, la valeur accepté est représenté par une des propriétés statiques de la classe GraphicsPathWinding
:
- EVEN_ODD : String = « evenOdd »
- NON_ZERO : String = « nonZero »

Exemple :
Pour dessiner une ligne partant de 100, 100 et allant a 300, 100 (ligne droite de 200px), on va définir :
var commandes:Vector.<int> = new Vector.<int>(); commandes.push(GraphicsPathCommand.MOVE_TO); commandes.push(GraphicsPathCommand.LINE_TO);
ou directement :
commandes.push(1); commandes.push(2);
ou encore :
commandes[0] = 1; commandes[1] = 2;
ensuite déclarons le tableau des positions :
var positions:Vector.<Number> = new Vector.<Number>(); positions.push(100); positions.push(100); positions.push(300); positions.push(100);
Dés que les 2 tableaux sont déclarés, il suffit d’exécuter la méthode :
this.graphics.lineStyle(1, 0, 1); this.graphics.drawPath(commandes, positions);

info supplémentaire : Les arguments que reçoit drawPath
sont définis de la même manière que dans une occurrence de la classe GraphicsPath, voici un exemple équivalent aux 2 déclarations précédentes des
tableaux commandes
et positions
.
var gp:GraphicsPath = new GraphicsPath(); gp.moveTo(100, 100); gp.lineTo(300, 100);
On peut ensuite utiliser ces données avec drawPath
de cette maniere :
this.graphics.drawPath(gp.commands, gp.data);
simple, non ?
mais pourquoi avoir fait tout ca alors qu’un simple moveTo()
et lineTo()
aurait suffit ? -> Pour un début de réponse, voir la fin de l’article (drawGraphicsData et drawPath).