如何在不重新编写所有代码且不在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;
答案 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循环。
希望这会有所帮助!