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 のインスタンスは、1 つの DisplayObjectContainer にのみ存在できます。同じ DisplayObject を新しい DisplayObjectContainer に追加すると、以前のコンテナから削除されます。これを確認してください:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#addChild()

「...別の表示オブジェクト コンテナを親としてすでに持つ子オブジェクトを追加すると、そのオブジェクトは他の表示オブジェクト コンテナの子リストから削除されます。」

于 2013-09-19T15:36:26.927 に答える