如何计算flash / actionscript中形状之间的交集? (访问形状段和节点?)

时间:2010-12-24 15:24:37

标签: flash actionscript-3 actionscript geometry

我需要在flash / action脚本中计算两个形状之间的交集 问题是我无法访问形状的节点和段以及它们的坐标,所以我无法计算它。
你知道吗?

编辑:进一步说明: 我从EPS文件中导入了不规则多边形到其中有形状的动画片段 问题的数学解决方案是微不足道的,但要做到这一点,我需要通过AS代码访问组成多边形的节点的坐标,我试过没有成功。
这就是我想要实现的目标。

edit2:驳回这个问题。 这是不可能的。我正在应用的解决方法是将多边形保存在SVG中并解析它们以获取节点列表。然后将该列表提供给flash以计算运行时的交集和区域。

2 个答案:

答案 0 :(得分:1)

如果有答案我会很着迷,但据我所知,AS3的Shape类非常稀疏。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Shape.html

令人讨厌的是,等同的JSFL课程充满了你想要的东西。我不认为这会对你有用吗?

http://livedocs.adobe.com/flash/9.0/main/00004384.html#wp119221

答案 1 :(得分:1)

AFAIK,无法检索闪存中任何给定形状的数据。不幸的是,它是内部的东西。但是,您仍然可以使用Pixel Bender内核计算两个形状之间区域的足够近似值。使用ShaderJob,您可以异步运行计算,从而不会锁定UI。

这个想法类似于:

  1. 捕获第一个形状的位图
  2. 捕获第二个形状的位图
  3. 使用Pixel Bender内核创建ShaderJob,使用两个位图作为输入。对于每个像素,内核将计算形状是否相交,可能是多少。使用其中一个输出通道计算结果。
  4. 获取结果输出并将其总结为最终的alpha值。
  5. 我不确定这对你来说是不是比使用你的SVG方法更麻烦,但它至少是另一种选择。它可能有意义地计算两个形状边界的交点,并且只捕获形状中交叉矩形的位图。这是一个额外的步骤,但至少它可能更有效,在cpu时间方面也可能更高效。