2013-04-06 99 views
0

我有一个Flash游戏,我有一个图片被设计成文本框的提示和文本框里面的相关文本,但文本框被图像隐藏。任何人都知道如何制作,以确保文本框保持最佳状态,或者我需要做的任何事情以防止这种情况发生?如何修复在AS3舞台上的重叠对象

回答

3

使用setChildIndex肯定会工作,但是,我觉得不同的设计方法是你真正应该做的事情,除去对方回答头痛。

例如,在比赛中我可能有不同的层,比如:

backgroundLayer 
gameLayer 
interfaceLayer 

那些3个雪碧层将被添加到该订单的阶段。然后,我会将显示对象添加到适当的图层。因此,我添加到backgroundLayer或gameLayer的任何东西总是会在interfaceLayer上的用户界面后面。

这可以让你不必担心分层不断。 setChildIndex的答案将解决那个时候的问题,但是如果其他东西被添加到容器中,它将重叠您的文本框,这是我不认为你想要的。

这里有一个例子:

var backgroundLayer:Sprite = new Sprite; 
var gameLayer:Sprite = new Sprite; 
var interfaceLayer:Sprite = new Sprite; 

addChild(backgroundLayer); 
addChild(gameLayer); 
addChild(interfaceLayer); 
现在

,无论你增加interfaceLayer,将永远是物体的顶部,你添加到gameLayer或backgroundLayer。

因此,在您的文本框的情况下,只需将它添加到您的interfaceLayer和任何其他对象,你想要在它后面,你添加到gameLayer或backgroundLayer。

+0

你能澄清你的意思是从“精灵层”的实现角度? – avorum 2013-04-07 00:28:48

+0

Sprite是一个DisplayObject。所有DisplayObject都有一个显示列表,您可以添加/删除其他DisplayObject到/从。 – prototypical 2013-04-07 00:48:34

+0

用一个例子更新了答案。 – prototypical 2013-04-07 00:53:16

0

将显示对象添加到显示对象容器的顺序会影响它们的z顺序,换句话说就是前后顺序。最后添加的显示对象成为最前面的。因此,显示对象容器的子项的子索引对于重叠子项的绘制很重要。

如果你把图片和文字上相同的DisplayObjectContainer如MovieClip:

让我们说你的DisplayObjectContainer是MC。

而且你的文本框为TXT

请试试这个:

mc.setChildIndex(txt, mc.numChildren-1);