我有一个Flash游戏,我有一张图片,设计为内部提示和文本框的文本框,相关文字但文本框被图像隐藏。任何人都知道如何制作是为了保证文本框位于顶部或我需要做些什么来防止这种情况发生?
答案 0 :(得分:3)
使用setChildIndex
的另一个答案肯定会有效,但是,我认为不同的设计方法确实是你应该做的就是完全消除头痛。
例如在游戏中我可能有不同的层,例如:
backgroundLayer
gameLayer
interfaceLayer
这3个Sprite图层将按此顺序添加到舞台上。然后我会将显示对象添加到适当的图层。因此,我添加到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。
答案 1 :(得分:0)
将显示对象添加到显示对象容器的顺序会影响它们的z顺序,换句话说就是前后顺序。最后添加的显示对象成为最前面的对象。因此,显示对象容器的子项的子索引对于重叠子项的绘制很重要。
如果您将图片和文本放在同一个DisplayObjectContainer上,例如MovieClip:
让我们说你的DisplayObjectContainer是mc。
您的文本框是txt
请试试这个:
mc.setChildIndex(txt, mc.numChildren-1);