【问题标题】:Graphics - overlapping bug or what?图形 - 重叠错误或什么?
【发布时间】:2010-09-18 20:45:42
【问题描述】:

我这里有一个相当大的代码......但幸运的是它根本不需要提及。它归结为......失败的东西?所以,最后这应该是绘制两个三角形(使用 AS3 图形)。它适用于一个,但当我在那里放第二个时,它看起来很奇怪。我对其进行了跟踪调试,我认为该错误在图形中 - 这是我绘制的实际点的输出:

DRAW
- POINT ( 50 , -50 )
- POINT ( -50 , 50 )
- POINT ( 50 , 50 )
DRAW
- POINT ( -50 , -50 )
- POINT ( 50 , -50 )
- POINT ( -50 , 50 )

(x, y),两个三角形。这将导致一种颜色的正方形(这些三角形是一种颜色),或者如果我要更改颜色,可能会导致正方形分成两半。

会...不会。

相反,我得到了这个:

OR(这很奇怪),当我切换三角形的绘制顺序时:

...

知道发生了什么吗? 我在另一个论坛上读过,应该在绘制每个形状之前和之后调用函数 beginFill 和 endFill - 显然这就是我在查看之前所做的 - 否则颜色不会有所不同。那么 - 有什么想法吗?

编辑:

图形调用如下所示:

for (var vi:int = 0; vi < triangles.length; vi++){
    gfx.beginFill(0xFF0000, 0.5 + (0.5 * vi));
    trace("DRAW");
    trace("- POINT ( " + triangles[vi].points[0].x + " , " + triangles[vi].points[0].y + " )");
    trace("- POINT ( " + triangles[vi].points[1].x + " , " + triangles[vi].points[1].y + " )");
    trace("- POINT ( " + triangles[vi].points[2].x + " , " + triangles[vi].points[2].y + " )");
    gfx.lineTo(triangles[vi].points[0].x, triangles[vi].points[0].y);
    gfx.lineTo(triangles[vi].points[1].x, triangles[vi].points[1].y);
    gfx.lineTo(triangles[vi].points[2].x, triangles[vi].points[2].y);
    gfx.lineTo(triangles[vi].points[0].x, triangles[vi].points[0].y);
    gfx.endFill();
}

【问题讨论】:

  • 对 Graphics 对象的实际调用会有所帮助。
  • 添加了它们...这是一个实际的错误还是?

标签: actionscript-3 graphics vector-graphics


【解决方案1】:

第一个gfx.lineTo 应该是gfx.moveTo

【讨论】:

  • 哦,现在我明白了。 :D 忘记在每个三角形之前调用 moveTo ......然后这会导致从前一个三角形的最后一点开始的一条线。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 2021-07-27
  • 2015-12-25
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多