找到这个主题: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个星星,每个星星都有概述的代码。
答案 0 :(得分:0)
当你addChildAt(myChildMC, 0);
它被添加到索引0时,其他一切都会被提升。 AS3中的Z顺序索引是连续的,这意味着必须填充从零到最高z顺序的每个空间。如果我删除第4层上的任何内容,第5层将向下滑动以填充,依此类推
我不认为你可以在索引20中添加一些内容,除非所有其他索引都有子代。这可能是造成您特定错误的原因。要向顶级添加内容,请执行addChild(myChild)
。
修改强>
因为听起来你有一个关于z-order如何在你脑海中反向运作的概念,你可能想要拥有明星&#34;在前面&#34;其他一切,即始终在顶部,即始终可见。要做到这一点,只需在添加所有其他容器或Sprites或MovieClip后执行addChild(starsContainer)
。如果你在运行时向舞台添加一些东西,只需再次添加星星容器(这不会创建第二个容器,如果已经有一个名称的容器,它实际上只是更改了z顺序...这是一个经常被误解的观点。)