0

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

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

我一直在试验 drawPath() 方法的缠绕参数,但我无法理解的一件事是 Flash 是如何定义缠绕方向的,所以在真正遇到真正的问题之前,这是第一个问题:Are points考虑坐标?还是定义方向的生产线之间的角度?

话虽如此,这是我的实际问题:我想绘制一个形状,它是一条直线上的矩形的投影 - 想想一扇窗户,穿过它的光线照射到地板上。

在此处输入图像描述

为了实现这一点,我必须考虑到光源位置可能会发生变化并产生这种结果:

在此处输入图像描述

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

我一直在努力小心地保持每个部分的缠绕方向相同,从左上角开始,但我的推理似乎有问题,因为每次中心部分与任何侧面部分重叠时,形状都是在那里清空,每次两侧部分重叠时,都会发生同样的情况。

当我在这里写这篇文章时,我突然想到了一些启示,现在我想也许我的坐标向量中的所有点都必须按照相同的缠绕方向排序才能使我的形状起作用?...(不仅是小的我在脑海中分别画出的部分^^)

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

  • 对我的点进行排序以放置在正确的缠绕方向上(这可能很复杂,一旦提供给绘图 API 可能会导致一些奇怪的绘制形状?...)

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

这里的任何人都可以证实或证实我最后的假设,并给我一个关于这里可能发生的事情以及如何解决它的线索吗?...

非常感谢 :-)

4

1 回答 1

1

您想要一个由三个投影线组成的形状吗?好的,您已经确定了两个较低点的位置,并且您的窗口有 4 个点。然后你像这样构造一个列表:

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

你完成了。而且您将不再需要 3 个预测,您只计算最底部的一个(它会给您在地板上的两个点),然后列出您的列表。应该做。请评论。

于 2012-10-06T17:15:46.793 回答