如何添加另一个对象,如创建的对象

时间:2013-09-02 16:20:47

标签: actionscript-3

如何在不重新编写所有代码且不在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;

3 个答案:

答案 0 :(得分: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个实例并添加到舞台。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我会这样做。 创建Background类并放入

private function createRow_Col()

作为Background.as的一部分,并在使用

将bg添加到舞台时调用该函数
addEventListener(Event.ADDED_TO_STAGE, onAdded) // in Background.as

然后在主要班级 制作vars bg1和bg2,并将其添加到容器中。我想你会这样做,所以你可以做一些过渡效果,如果不是这样的话,你可以保持原样,并把它放在一边。 10代替j&lt; 5循环。

希望这会有所帮助!