addChild不应该是空的

时间:2013-09-19 15:23:03

标签: actionscript-3

目前我正在试图制作一个移动的背景。所以我正在计算舞台上有多少个对象,然后将这些对象添加到2个容器,但似乎只是将它们添加到最后容器 spriteContainer2 当我跟踪 .... numChildren

所以我知道出了什么问题,但是......我不知道为什么会这样做。并且有人可以帮我解决这个问题,因为我不熟悉flash中的所有方法。(在现实世界中,我会获得第一个容器并制作它的副本然后使用它)

    var speed:int = 1
var offset:int;
var spriteContainer:Sprite = new Sprite;
var spriteContainer2:Sprite = new Sprite;

var redSqBitmapData:BitmapData = new Tile_1();
var redSqBitmapData2:BitmapData = new Tile_2();
var my_shape:Bitmap = new Bitmap(redSqBitmapData);

my_shape.scaleX  = my_shape.scaleY = stage.stageWidth / my_shape.width
trace(my_shape.height)

var stageH:Number = stage.stageHeight;
var elementH:Number = my_shape.height;
var numberElements:int = Math.ceil(stageH / elementH);
var i:int=0

for( i; i< numberElements; i++){

    var my_shape2 = new Bitmap(redSqBitmapData);
    my_shape2.scaleX  = my_shape2.scaleY = stage.stageWidth / my_shape2.width
    my_shape2.x = 0;
    my_shape2.y = my_shape.height * i
    spriteContainer.addChild(my_shape2)
    spriteContainer2.addChild(my_shape2)

}

addChild(spriteContainer)
trace(spriteContainer.numChildren)
addChild(spriteContainer2)
trace(spriteContainer2.numChildren)

this.addEventListener(Event.ENTER_FRAME, onEveryFrame)
function onEveryFrame(evt:Event):void{

    offset +=  speed;
    spriteContainer.y = offset % spriteContainer.height - spriteContainer.height;
    spriteContainer2.y = spriteContainer.y - spriteContainer2.height

}

1 个答案:

答案 0 :(得分:1)

DisplayObject的实例只能在一个DisplayObjectContainer中。将相同的DisplayObject添加到新的DisplayObjectContainer中将从以前的Container中删除它。检查一下:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#addChild()

“...如果添加一个已经有不同显示对象容器的子对象作为父对象,则该对象将从另一个显示对象容器的子列表中删除。”