2017-08-14 138 views
0

我对使用Flash并不陌生,但我主要用它来制作动画,而且我并没有真正使用动作片,但是这次我想尝试通过码。处理多个动画片段相对于彼此的位置

我试图将方形影片剪辑放置成类似菜单的网格。 我将每个影片剪辑都定位在代码中,但我想也许有更好更有效的方法来做到这一点。

该代码是非常基本的,但我会张贴它无论如何,所以你有我想让它看起来像的图像。我不擅长解释,所以我很抱歉。

//1st row// 
var btn1:MovieClip = new dBtn(); 
btn1.x = -210; 
btn1.y = -90; 
addChild(btn1); 

var btn2:MovieClip = new dBtn(); 
btn2.x = btn1.x+70; 
btn2.y = btn1.y; 
addChild(btn2); 

var btn3:MovieClip = new dBtn(); 
btn3.x = btn2.x+70; 
btn3.y = btn2.y; 
addChild(btn3); 

//2nd row// 
var btn4:MovieClip = new dBtn(); 
btn4.x = btn1.x; 
btn4.y = btn1.y+70; 
addChild(btn4); 

var btn5:MovieClip = new dBtn(); 
btn5.x = btn4.x+70; 
btn5.y = btn4.y; 
addChild(btn5); 

var btn6:MovieClip = new dBtn(); 
btn6.x = btn5.x+70; 
btn6.y = btn5.y; 
addChild(btn6); 

//3rd row// 
var btn7:MovieClip = new dBtn(); 
btn7.x = btn4.x; 
btn7.y = btn4.y+70; 
addChild(btn7); 

var btn8:MovieClip = new dBtn(); 
btn8.x = btn7.x+70; 
btn8.y = btn7.y; 
addChild(btn8); 

var btn9:MovieClip = new dBtn(); 
btn9.x = btn8.x+70; 
btn9.y = btn8.y; 
addChild(btn9); 

回答

0

循环+简单的数学。

var buttonsList:Array = new Array; 

for (var i:int = 0; i < 9; i++) 
{ 
    // You can omit() with "new" operator if there are no arguments. 
    var aBut:MovieClip = new dBtn; 

    // Value of i % 3 goes 0 1 2 0 1 2 0 1 2. 
    aBut.x = -210 + 70 * (i % 3); 
    // Value of int(i/3) goes 0 0 0 1 1 1 2 2 2. 
    aBut.y = -90 + 70 * int(i/3); 

    addChild(aBut); 
    buttonsList[i] = aBut; 
} 

然后解决他们每个人可以用其索引0-8分别为:

// Make the central one semi-transparent. 
buttonsList[4].alpha = 0.5; 
+0

非常感谢你这一点。有没有一种方法可以针对每个实例?我想在每个实例中添加一个不同的影片剪辑。 – chb382

+0

@ chb382查看已更新的答案。 – Organis

+0

我实际上在几个小时前就知道了。我想通过一个数组来实现它,但我还不知道如何去做,经过一番搜索之后,我发现了它。非常感谢你的帮助。我想我现在对它的了解要好很多。 – chb382