0

我有一个 Flash 游戏,其中我有一张图片设计为提示文本框和内部带有相关文本的文本框,但文本框被图像隐藏。任何人都知道如何制作,以确保文本框位于顶部,或者我需要做些什么来防止这种情况发生?

4

2 回答 2

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。

于 2013-04-06T22:56:25.090 回答
0

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

如果将图片和文本放在同一个 DisplayObjectContainer 上,例如 MovieClip:

假设您的 DisplayObjectContainer 是 mc。

你的文本框是 txt

请试试这个:

mc.setChildIndex(txt, mc.numChildren-1);
于 2013-04-06T20:52:30.790 回答