2013-09-19 6 views
1

В настоящее время я пытаюсь сделать движущийся фон. Так что я рассчитываю, сколько объектов может быть на сцене, а затем добавление этих объектов в 2 контейнеры, но кажется, что это просто добавление их в последний контейнер spriteContainer2 когда я прослеживать с .... numChildrenaddChild empty, когда это не должно быть

так что я знаю, что это неправильно, но .. я не знаю, почему он делает это. И может кто-то помочь мне с решением для этого, потому что я не знаком со всеми методами во flash (в реальном мире я получаю 1 контейнер и сделаю его копию, а затем воспользуюсь)

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

Экземпляр объекта DisplayObject может находиться только в одном DisplayObjectContainer. Добавление того же DisplayObject в новый DisplayObjectContainer приведет к удалению его из предыдущего контейнера. Проверьте это: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#addChild()

«... Если добавить дочерний объект, который уже имеет другой контейнер экранного объекта в качестве родительского элемента, объект удаляется из списка дочерних элементов другого контейнера объекта отображения ..»

+0

ouuu i see.Well, я сделал цифру, что это было что-то вроде этого, поэтому я рекомендую ** spriteContainer.addChild (my_shape2) ** и установить ** spriteContainer2.y ** на 100, и все они уточнили. сделайте это тогда? – GregorII

+0

Вы можете создать новый Bitmap (redSqBitmapData) для каждого контейнера. –

+0

Вы имеете в виду, как 'var my_shape3 = new Bitmap (redSqBitmapData);' 'my_shape3.scaleX = my_shape3.scaleY = stage.stageWidth/my_shape3.width' ' my_shape3.x = 0; my_shape2.y = my_shape.height * i' , а затем spriteContainer2.addChild (** my_shape3 **) ??? или я не получаю то, что вы мне говорите – GregorII

Смежные вопросы