Flash 在层之间绘制精灵

Flash 在层之间绘制精灵,flash,actionscript-3,Flash,Actionscript 3,有可能在电影唇上,在特定的图层上画一个精灵吗 我在Flash designer中创建了一个MC,它有3层,背景,一些布局,然后是一些文本。在actionscript中,我在代码中创建了一个Sprite对象,在其上绘制了一个矩形,并使用addChild(从MC中调用)将其添加到stage中 问题是,精灵总是被绘制在我在设计器中添加的所有布局材料之上 有没有办法将精灵添加到特定层的MC中?在本例中为背景层 我试着在精灵上改变z,但没有效果。将舞台上所需的对象转换为movieclips。这些电影嘴唇可

有可能在电影唇上,在特定的图层上画一个精灵吗

我在Flash designer中创建了一个MC,它有3层,背景,一些布局,然后是一些文本。在actionscript中,我在代码中创建了一个Sprite对象,在其上绘制了一个矩形,并使用addChild(从MC中调用)将其添加到stage中

问题是,精灵总是被绘制在我在设计器中添加的所有布局材料之上

有没有办法将精灵添加到特定层的MC中?在本例中为背景层


我试着在精灵上改变z,但没有效果。

将舞台上所需的对象转换为movieclips。这些电影嘴唇可能在不同的层次上。然后使用函数setChildIndex()、swapChildrenAt()和 getChildIndex()以实现所需的效果。如果你给我看代码,我可以多加评论。有关这些功能的更多详细信息,请访问

还可以看看使用addChildAt(精灵,索引); 位于该索引的对象将上升一级。

更改“z”是一个很好的尝试,但它不会起任何作用

实际上,所有的电影剪辑都是按特定的顺序堆叠的。当有画的时候,它是按照这个顺序画的,就像画家用一幅新的画覆盖一幅图形一样。更改“z”值将更改该电影剪辑的感知深度,但不会更改电影剪辑的绘制顺序。由于您的精灵位于所有电影剪辑的顶部,因此它将始终是最后一个绘制的精灵,即使您更改“z”

使用ActionScript时,“层”实际上并不存在。这是一个只能通过Flash Professional获得的概念。最后,Flash Professional在addChild()请求中转换其层

因此,您可以使用addChildAt()方法放置新的电影剪辑。索引值为0时,新电影剪辑将绘制在所有其他电影剪辑的下方,而不是顶部

您必须找到引用电影剪辑的索引(例如,在Flash Pro中为其指定一个实例名“reference”),以便使用“getChildIndex(reference)”检索其索引。然后,您可以使用addChildAt()将新电影剪辑设置在该索引的顶部或下方。如果设置了与参考电影剪辑相同的索引,则该索引将位于其下方

另一种技术可以是创建一种在Flash Professional中设置的虚拟电影剪辑(“dummy”),然后使用“dummy.addChild()”将新电影剪辑添加到此虚拟电影剪辑中


如果您想通过ActionScript在一个“层”中重新组合多个图形,以便使用addChildAt()轻松地在显示列表中上下移动组,您可以将它们添加到精灵对象中,然后移动精灵。

好的,但在我的例子中,“游戏”MC有3层,第一层有一个png位图对象,第二层有多个用于布局的png位图对象,第三层有一些textfield对象。由于这些层上的东西都不是MCs,我可以使用addChildAt(精灵,0)将精灵放在背景层中吗?(在布局层下面)好的,我明白了。使用纯图像时可能会出现一些问题:由于FlashPro在内部进行管理,我们无法为它们指定实例名称,也无法轻松获取它们的子索引。无论如何,您可以将addChildAt(sprite,0)放在后台。使用addChildAt(sprite,1)将您的sprite放在背景前面可能会更好。但是,您必须知道,如果原始图像之间没有MovieClip,flashpro有时会合并原始图像。一个解决办法是在MovieClip中转换你的图像:它们将有一个真正的子索引,就像另一个MovieClip一样。是的,我将我想要绘制的布局转换成了MC。所以它的索引现在是1,背景和其他布局BMP的索引是0。如果我在索引1处绘制精灵,它似乎可以工作,布局mc充当遮罩。谢谢