Ceci est causé par le chemin graphique d'enroulement.
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 :
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:
var g:Graphics = graphics;
g.beginFill(0x123456)
g.drawRect(100, 100, 50, 50);
g.drawRect(125, 125, 50, 50);
g.endFill();
Vous avez le plus étrange, mais plus intéressante collection de connaissances que je sais. – Marty
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