用于(循环)动态创建

时间:2009-02-17 12:06:36

标签: flash actionscript-3 dynamic for-loop

我正在尝试使用for循环创建动态球。 出于某种原因,我得到两个对象(跟踪显示2个球及其不同的属性),但在舞台上我只能看到最后一个创建。

这是我的代码:

var randomBall_mc:ball=new ball();
for (i=1; i<3; i++)
{
        addChild(randomBall_mc);
    randomBall_mc.name="randomBall"+i;
    randomBall_mc.x=150*i;
    randomBall_mc.y=175;
    randomBall_mc.height=20*i;
    randomBall_mc.width=20*i;
        trace("randomBall"+i);
    trace(randomBall_mc.x);
    trace(randomBall_mc.height);
}

我的代码有什么问题?

3 个答案:

答案 0 :(得分:1)

看起来你只是在循环之前将球实例化一次,而不是每次迭代都这样做。

答案 1 :(得分:1)

var randomBall_mc:ball = new ball(); 应该在for循环中,以便创建多个“ball”

for (i=1; i<3; i++) {
var randomBall_mc:ball=new ball();**
addChild(randomBall_mc);
randomBall_mc.name="randomBall"+i;
randomBall_mc.x=150*i; randomBall_mc.y=175;
randomBall_mc.height=20*i;
randomBall_mc.width=20*i; trace("randomBall"+i);
trace(randomBall_mc.x);
trace(randomBall_mc.height);}

答案 2 :(得分:0)

答案很明确,但稍微改进了代码:

var ball:Ball; // Observe convention: capitalise class names var i:int = 0; // Make sure to type your variables for (; i < 3; i++) { ball = new Ball(); ball.name = "randomBall"+i; ball.x = 150 * i; ball.y = 175; ball.height = 20 * i; ball.width = 20 * i; addChild(ball); // Configure your instance first; // then add it to the display list trace("ball:", i, ball.x, ball.height); }