0

对,所以这是场景:我有 4 个对象,A、B、C 和 D。我想要的是 C 遮住 A,但不遮住 B。同样,我想让 D 遮住 B,但不遮住 A。A 和 B 可以以任何顺序相互重叠,没关系。

换句话说,我想要的是一个能够覆盖一个对象(A)而不是另一个(B)的对象(C),即使它与它接触。与 D 相同,它可以覆盖 B 但不能覆盖 A,即使它与它接触。问题是我想不出一个允许这样做的层配置:D 将始终高于 A 和 B,因此会掩盖两者。

我不指望任何人想出一些不可思议的聪明配置,但我想知道是否有某种 ActionScript 可以做到这一点。特别是,我希望 A 和 B 是动态的 TextFields,而 C 和 D 是任何形状(即不是矩形)的 MovieClip。

希望这是可能的!

4

3 回答 3

2

您将它们添加到舞台的顺序决定了在什么之前显示什么。基本上,最后添加的内容在顶部,首先添加的内容在底部。

如果您希望 C 覆盖 A 但不覆盖 B,而 D 覆盖 B 但不覆盖 A,那么您就有问题了。想想如果所有四个都相互重叠会发生什么。C会试图覆盖A并让B通过,而D会试图覆盖B并让A通过。不可能。

于 2012-03-17T17:17:34.367 回答
2

您可以使用 blitting,您实际上并没有将项目添加到舞台,而是使用 copyPixels() 或 draw() 来绘制像素。如果你这样做了,那么你可以确定对象的哪些部分将被绘制或不会被绘制。查看这篇博客文章,了解该技术的概述http://www.developria.com/2010/02/dealing-with-bitmapdata.html

于 2012-03-17T19:07:01.527 回答
0

假设我了解您想要什么,请使用setChildIndex()父/包含 MovieClip 的功能。如果您的所有 ABCD 对象都包含在名为 parent_mc 的 MovieClip 中,您可以执行以下操作:

parent_mc.setChildIndex(a_mc, parent_mc.numChildren-1); // Throw "a_mc" on top
parent_mc.setChildIndex(b_mc, parent_mc.numChildren-1); // Throw "b_mc" on top

这将导致在b_mc等之上a_mc...

您还应该在显示列表的最底部扔一些东西:

 parent_mc.setChildIndex(b_mc, 0);

此处的文档:DisplayObjectContainer.setChildIndex()

于 2012-03-17T19:16:37.503 回答