Actionscript中的Movieclip堆叠

时间:2010-03-31 04:39:28

标签: actionscript-3 movieclip

我正在构建一个游戏,其中界面是首先加载到屏幕上的项目之一。声音按钮,暂停和所有位 -

在游戏过程中 - 所有物品庄园都会动态添加并移至舞台。因此,我的界面落后于我的游戏场景。

如何确保动画片段始终位于顶部?

我可以覆盖文档类的addChild,每次添加新子项时,我都会将界面重新打包到顶部吗?

3 个答案:

答案 0 :(得分:1)

查看addChildAt,它允许您指定应添加新对象的索引。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChildAt%28%29

一个好的策略是将所有界面元素保存在一个父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
}