AS3 - drawPath()&缠绕重叠产生奇怪的行为

时间:2012-10-05 23:30:35

标签: actionscript-3 flash

我正在尝试在同一个Sprite.graphics范围内绘制多个形状,似乎找不到任何合理的解决方案来解决我的问题。

请注意我一直在使用drawPath()方法来解决性能问题:我可以使用多种形状的混合模式,但我想避免这种情况,并将性能成本降至最低。

我一直在尝试使用drawPath()方法的绕组参数,但有一件我无法理解的是,绕线方向是如何由Flash定义的,所以这是实际出现问题之前的第一个问题: 是否考虑了点坐标?或者它是定义方向的生产线之间的角度?

话虽如此,这是我的实际问题: 我想绘制一个从一条线上的矩形投影的形状 - 想象一个窗口以及穿过它的光线撞击地板。

enter image description here

为实现这一目标,我必须考虑到光源位置可能会有所不同并产生这样的结果:

enter image description here

在第二张图片上,你已经可以看到我面临的问题。 为了绘制我的形状,我已经单独“绘制”(理解:将数字放在我的坐标向量中)我的图形的不同部分:我想投影的实际矩形,从左侧投射的光,投射的光从它的底部开始,从右侧投射的光。

我一直试图从左上角开始小心地保持每个部分的缠绕方向相同,但是我的推理似乎有些不对劲,因为每次中心部分与任何侧面部分重叠,形状在那里被清空,每当两边部分重叠时,同样的事情就会发生。

正如我在这里写的那样,一些启示突然袭击了我,现在我猜我的坐标向量中的所有我的点必须按照相同的缠绕方向排序才能使我的形状发挥作用?...(而且不仅是我在脑海中单独绘制的小部分^^)

如果我是对的(如果我不是,请纠正我,或者我是否理解错了?......),这意味着我必须:

  • 将我的点放在正确的缠绕方向上(可能很复杂的东西,一旦提供给绘图API,可能会产生一些奇怪的绘制形状?...)

  • 仅从最外部的点绘制形状,具体取决于形状的实际形状(可能比我目前期望的更复杂)。

这里的任何人都可以证实或证实我最后的假设,并告诉我这里可能会发生什么以及如何解决这个问题的线索?...

非常感谢: - )

1 个答案:

答案 0 :(得分:1)

你想拥有一个由三条投影线组成的形状?好的,你确定了两个较低点的位置,你的窗口有4个点。然后构建一个如下列表:

  • 列表中总是有两个最高点,因为你写道你的灯总会掉到窗外。因此,将0放入命令,将窗口的左上角坐标放入路径,将1放入命令(lineTo),将窗口的右上角指向路径。
  • 现在,如果您的两个落地点的X小于窗口的右下角,则将窗口的点添加到路径中!
  • 然后你添加最右边的楼层点,然后最左边。
  • 然后,如果您的两个落地点的X大于窗口的左下角,则将其添加到列表中。

你已经完成了。而且你将不再需要3个投影,你只计算最底部的投影(它会在地板上给你两个点),并列出你的清单。应该做。请评论。