2012-07-03 5 views
0

Je suis un peu nouveau dans Actionscript 3. Je construis un export svg/import en flash et j'ai besoin de faire en sorte que l'aperçu se comporte comme svg. En flash, si un chemin se chevauche, il est supprimé. Comment puis-je le faire remplir toute la zone?Actionscript 3 - Chevauchement des chemins

Les chemins sont créés avec ceci:

object.graphics.moveTo(xpos[i], ypos[i]); 
object.graphics.lineTo(px, py); 

Le résultat est enter image description here

Répondre

3

Ceci est causé par le chemin graphique d'enroulement.

graphics-path-winding

Defining winding rules
flash.diplay.GraphicsPathWinding

Dans Flash, la règle d'enroulement par défaut est même étrange.

Pour les graphiques produits à l'aide drawPath, ajoutez GraphicsPathWinding.NON_ZERO enroulement à votre drawPath:

import flash.display.GraphicsPathWinding; 

graphics.drawPath(new <int>[], new <Number>[], GraphicsPathWinding.NON_ZERO); 

Pour les graphiques tirés à l'aide des méthodes pratiques telles que lineTo(), drawCircle() ou drawRect(), vous pourriez beginFill() et endFill() par forme dessinée, comme dans :

enter image description here

var g:Graphics = graphics; 

g.beginFill(0x123456) 
g.drawRect(100, 100, 50, 50); 
g.endFill(); 

g.beginFill(0x123456) 
g.drawRect(125, 125, 50, 50); 
g.endFill(); 

Au lieu de:

even-odd

var g:Graphics = graphics; 

g.beginFill(0x123456) 
g.drawRect(100, 100, 50, 50); 
g.drawRect(125, 125, 50, 50); 
g.endFill(); 
+1

Vous avez le plus étrange, mais plus intéressante collection de connaissances que je sais. – Marty

+0

Revenons à ceci: beginFill, endFill for lineto ne fonctionne pas. Le chevauchement en question est le résultat d'un "lineto" continu. (Référence l'image ci-dessus.) Je travaille sur convertir le lineto à drawPath. – teynon