AS3-使对象模糊特定对象



好的,下面是场景:我有4个对象,A、B、C和D。我想要的是C模糊A,但不模糊B。同样,我希望D模糊B,但不能模糊A。A和B可以按任何顺序重叠,这无关紧要。

换言之,我想要的是一个对象(C)能够覆盖一个对象,但不能覆盖另一个对象。即使它与之接触。D也是如此,它可以覆盖B,但不能涵盖A,即使它与它接触。问题是,我想不出一种层配置允许这样做:D总是高于A和B,因此会混淆两者。

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

希望这是可能的!

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

将它们添加到舞台的顺序决定了什么显示在什么前面。基本上,最后添加的东西在上面,第一个添加的东西就在下面。

如果你想让C覆盖A但不覆盖B,让D覆盖B但不覆盖A,你就有问题了。想一想如果这四个都重叠在一起会发生什么。C将试图覆盖A并让B通过,而D将试图覆盖B并让A通过。不可能。

假设我了解您想要什么,请使用父级/包含MovieClip的setChildIndex()函数。如果所有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()

最新更新