AS3(Flash10)中的3D线条

3

有没有一种直接的方法使用graphics.lineTo()/moveTo()绘制三维线条?我还没有遇到过这种情况。这两种方法只使用x/y作为它们的坐标。

我在我的精灵上使用'z'坐标,并希望用线连接它们...需要帮助。

1个回答

5

Graphics类仅适用于2D坐标。但是,您仍然可以以多种方式实现所需效果。最简单的方法是在要连接线条的主精灵内部放置空精灵。然后只需循环这些点并使用local3DToGlobal方法将它们的坐标转换为舞台坐标。然后在这些坐标之间绘制线条。当您使用local3DToGlobal时,Flash会处理投影,使其为您服务。您唯一需要担心的是线条的Z排序。


那么我应该在想要连接的精灵内放置空精灵,作为某种连接端点,并使用它们的坐标来...?这就是不清楚的地方。在该精灵内使用 Graphics(及其 lineTo/moveTo)吗? - deepblue
空的剪辑本质上是你线条的“锚点”。它们应该位于3D精灵内部,以便随其一起移动(因此flash会在你对坐标执行localToGlobal操作时为你处理投影数学)。你可以在这些剪辑中绘制线条,或者在舞台层级最顶层之上进行绘制。如果你在剪辑中进行绘制,你将希望从两个剪辑中较深的那个向前绘制,以保持线条的深度相对正确。 - Branden Hall
我理解您的嵌套层次结构,但是在我看来,z坐标似乎会被忽略,因为我假设您谈论使用lineTo进行绘图(如果不是,请更正我,就实际的绘制调用而言);localToGlobal与基于x / y的Point实例一起使用(除非我没有意识到flash10扩展)。如果我缺少基本/显而易见的东西,请原谅我...由于Flash不能正确地进行z排序渲染,所以我会像您建议的那样单独处理这个问题。 - deepblue
是的,我的确打算使用lineTo进行绘图。然而,我说错了,你将使用local3DToGlobal而不是localToGlobal。 - Branden Hall
我明白了,感谢提供函数参考。据我所见,我必须注意并旋转包含2D线条的容器精灵,因为附加到目标3D精灵的锚点位于不同的Z坐标上...遗憾的是,没有直接的3D线条绘制方式可以避免手动进行这些变换。 - deepblue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接