0

我如何添加另一个像这样的对象,而无需再次执行所有代码,也无需在 2 个单独的 MovieClip 容器中显示它?

我有这个 BG 是一个简单的正方形 10px x 10px

    private var bg:BG = new BG();
    private var myContainer:MovieClip = new MovieClip();

    public function MainClass_Test() {
        createRow_Col();
    }

    private function createRow_Col() {
        var bg:MovieClip = new BG();
        for (var i:int = 0; i < 5; i++) {
            bg[i] = new BG();
            for (var j:int = 0; j < 5; j++) {
                bg[i][j] = new BG();
                myContainer.addChild(bg[i][j]);
                bg[i][j].x = bg[i][j].width * j + j * 10;
                bg[i][j].y = bg[i][j].height*i + i*10
                ;
            }

        }
        myContainer.x = stage.x 
        myContainer.y = stage.stageHeight / 2 - myContainer.height / 2;
        addChildAt(myContainer,0);
    }

如何使用与第一个相同的电影剪辑制作 myContainer2,然后我可以将它添加到第一个旁边

myContainer2.x = myContainer.x + myContainer.width +10

myContainer2.y = stage.stageHeight / 2 - myContainer2.height / 2;

4

3 回答 3

2

一个简单的方法是更改createRow_Col​​为接收一个容器和一个x,y

private var bg:BG = new BG(); // this is not used as another `bg` is declared in side the function
private var myContainer:MovieClip = new MovieClip();
private var myContainer2:MovieClip = new MovieClip();

public function MainClass_Test() {
    createRow_Col(myContainer, stage.x, stage.stageHeight/2 - myContainer.height/2);
    createRow_col(myContainer2, myContainer.x + myContainer.width + 10);
}

private function createRow_Col(container:MovieClip, x:Number, y:Number) {
    var bg:MovieClip = new BG();
    for (var i:int = 0; i < 5; i++) {
        bg[i] = new BG();
        for (var j:int = 0; j < 5; j++) {
            bg[i][j] = new BG();
            container.addChild(bg[i][j]);
            bg[i][j].x = bg[i][j].width * j + j * 10;
            bg[i][j].y = bg[i][j].height * i + i * 10;
        }

    }
    container.x = x; 
    container.y = y;
    addChildAt(container, 0);
}

更好的方法是将 createRow_Col 中的功能包装在从 MovieClip 派生的类中,这样您只需实例化 2 个实例并添加到舞台。

于 2013-09-02T17:15:43.290 回答
0

我会这样。创建背景类并放置

private function createRow_Col()

作为 Background.as 的一部分,并在将 bg 添加到舞台时调用该函数

addEventListener(Event.ADDED_TO_STAGE, onAdded) // in Background.as

然后在主类中制作 vars bg1 和 bg2,并将其添加到您的容器中。我猜你想要这个,所以你可以制作一些过渡效果,如果不是这样,你可以保持原样并将 j < 10 而不是 j < 5 放入循环中。

希望这会有所帮助!

于 2013-09-02T17:17:01.327 回答
0

为什么不为容器创建一个类?然后,您可以使用相同的属性多次实例化它...

于 2013-09-02T17:12:56.443 回答