AS3 - 检查形状是否已关闭

时间:2013-04-03 14:09:47

标签: actionscript-3 graphics drawing shape fill

使用'lineTo()'绘制形状,我需要检查绘制的线是否创建一个闭合的形状。 如果是这样,我需要用颜色填充该形状。 有人可以告诉我这是否可行,如果有的话请告诉我。 感谢

2 个答案:

答案 0 :(得分: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);

P.S。如果对你有所帮助,不要忘记接受答案。

答案 1 :(得分:0)

最快的解决方案可能是将路径存储为正在绘制的点列表,然后针对交叉点检查每个新段与现有段。无论何时找到,都按此顺序绘制一个单独的循环:

  • 交。
  • 现有细分的第二个顶点。
  • 所有中间顶点,包括新段的第一个顶点。
  • 交。

一个潜在的问题是,如果你绘制一些小环,然后围绕它们,你最终会得到一个与自身相交的大填充并重叠小环,这可能会沿着边缘渲染得很差。

理想情况下,您需要创建添加了任何交叉点的路径图,然后查找未包含在另一个周期内的每个周期,但这显然更复杂一些。之前的问题有一些答案与找到包含其他循环的所有循环有关,可以通过组合共享边的循环来调整: Find all chordless cycles in an undirected graph