发送容器的所有实例以及其他所有内容?

时间:2016-12-11 16:55:57

标签: actionscript-3 flash

找到这个主题:AS3 setChildIndex to front我试图完成相反的事情。

" addChildAt"当我将容器放在其他所有东西或其他东西后面时,对我来说不起作用。至于星星本身,由于某些奇怪的原因,我不能再将它们发送回第0层(它会给我错误2006,说明"提供的索引超出界限") 。这是代码:

starsSpawn功能:

var starContainer:MovieClip = new MovieClip();
addChildAt(starContainer, 20);

starContainer代码:

function starsSpawn()
{
    for(var i:int= 0; i < 30; i++)
    {
        var newStar = new starCode();
        var scaleXY = Math.random()*(2)+0.1;
        newStar.width = scaleXY;
        newStar.height = scaleXY;
        var positionX:Number = Math.random()*(stage.stageWidth + (1* newStar.width));
        var randomY:Number = Math.random()*(stage.stageHeight - newStar.height);
        newStar.x = positionX;
        newStar.y = randomY;
        starContainer.addChild(newStar);
    }
}

基本上它是如何工作的是设置一个容器并且for循环创建30个星星,每个星星都有概述的代码。

1 个答案:

答案 0 :(得分:0)

当你addChildAt(myChildMC, 0);它被添加到索引0时,其他一切都会被提升。 AS3中的Z顺序索引是连续的,这意味着必须填充从零到最高z顺序的每个空间。如果我删除第4层上的任何内容,第5层将向下滑动以填充,依此类推

我不认为你可以在索引20中添加一些内容,除非所有其他索引都有子代。这可能是造成您特定错误的原因。要向顶级添加内容,请执行addChild(myChild)

修改

因为听起来你有一个关于z-order如何在你脑海中反向运作的概念,你可能想要拥有明星&#34;在前面&#34;其他一切,即始终在顶部,即始终可见。要做到这一点,只需在添加所有其他容器或Sprites或MovieClip后执行addChild(starsContainer)。如果你在运行时向舞台添加一些东西,只需再次添加星星容器(这不会创建第二个容器,如果已经有一个名称的容器,它实际上只是更改了z顺序...这是一个经常被误解的观点。)