我正在构建一个游戏,其中界面是首先加载到屏幕上的项目之一。声音按钮,暂停和所有位 -
在游戏过程中 - 所有物品庄园都会动态添加并移至舞台。因此,我的界面落后于我的游戏场景。
如何确保动画片段始终位于顶部?
我可以覆盖文档类的addChild,每次添加新子项时,我都会将界面重新打包到顶部吗?
答案 0 :(得分:1)
查看addChildAt,它允许您指定应添加新对象的索引。
一个好的策略是将所有界面元素保存在一个父Sprite / MovieClip中,将所有游戏资源保存在另一个中。 (界面一个在上面)
答案 1 :(得分:1)
您可以使用setChildIndex重新排列MovieClip或Sprite中已包含的对象。例如,如果你有一个名为 container 的对象,它包含一个redBall,blueBall和许多其他球对象,你可以使用以下内容来确保redBall落后于其他所有对象:
container.setChildIndex(redBall, 0);
同样,您可以使用以下方法确保blueBall显示在其他所有内容之外:
container.setChildIndex(blueBall, container.numChildren-1);
addChildAt
将您排除将孩子直接添加到正确的位置,而setChildIndex将允许您重新定位已放置的对象。希望有所帮助。
得不
答案 2 :(得分:0)
根据你们的建议我做了这个,显然,如果你在屏幕上添加了一个对象,它只需重新索引到顶部。这看起来不错吗?
private var topLevelChildrenArray:Array = [];
public function addTopLevelChild(child:DisplayObject):DisplayObject
{
topLevelChildrenArray.push(child)
return this.addChildAt( child, this.numChildren - 1 );
}
override public function addChild(child:DisplayObject):DisplayObject
{
this.addChildAt(child, this.numChildren);
for each(var topChild:DisplayObject in topLevelChildrenArray)
{
super.addChild(topChild);
}
return child
}