0

使用 'lineTo()' 绘制形状,我需要检查绘制的线是否创建了闭合形状。如果是这样,我需要用颜色填充该形状。有人可以让我知道这是否可能,如果可以,请告诉我该怎么做。谢谢

4

2 回答 2

0

在使用 lineTo 之前,调用 beginFill。像这样的东西:

var _s:Sprite = new Sprite();
_s.graphics.beginFill(0xFF0000);
_s.graphics.lineStyle(1, 0xFFFF00);
_s.graphics.lineTo(50, 0);
_s.graphics.lineTo(50, 50);
_s.graphics.lineTo(0, 50);
_s.graphics.lineTo(0, 0);
_s.graphics.endFill();
addChild(_s);

PS如果对您有帮助,请不要忘记接受答案。

于 2013-04-03T14:38:39.097 回答
0

最快的解决方案可能是在绘制路径时将路径存储为点列表,然后将每个新段与现有段检查相交。每当您找到一个时,请按以下顺序为填充绘制一个单独的循环:

  • 路口。
  • 现有线段的第二个顶点。
  • 直到并包括新段的第一个顶点的所有中间顶点。
  • 路口。

一个潜在的问题是,如果你画了几个小环,然后围绕它们转圈,你最终会得到一个大的填充物,它与自身相交并与小环重叠,这可能会导致边缘的渲染效果不佳。

理想情况下,您希望创建一个添加了任何交叉点的路径图,然后找到不包含在另一个循环中的每个循环,但这显然涉及更多。上一个问题有一些与查找所有包含其他循环的循环相关的答案,可以通过组合共享边的循环来适应:Find all chordless cycles in an undirected graph

于 2013-04-03T22:22:35.573 回答