1

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

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

    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

}
4

1 回答 1

1

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

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

于 2013-09-19T15:36:26.927 回答