我有一个 Flash 游戏,其中我有一张图片设计为提示文本框和内部带有相关文本的文本框,但文本框被图像隐藏。任何人都知道如何制作,以确保文本框位于顶部,或者我需要做些什么来防止这种情况发生?
2 回答
使用的另一个答案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。
将显示对象添加到显示对象容器的顺序会影响它们的 z 顺序,即从前到后的顺序。最后添加的显示对象成为最前面。因此,显示对象容器的子项的子索引对于重叠子项的绘制很重要。
如果将图片和文本放在同一个 DisplayObjectContainer 上,例如 MovieClip:
假设您的 DisplayObjectContainer 是 mc。
你的文本框是 txt
请试试这个:
mc.setChildIndex(txt, mc.numChildren-1);