使用循环间隔开的同一对象的多个实例仅创建一个

时间:2011-02-05 22:57:00

标签: arrays actionscript-3 object instantiation

我很难正确地说出我的问题,所以如果它看起来令人困惑,我很抱歉。此外,我正在使用Flash Builder中的flixel库。它可能不是那么重要但因为可能任何知道比我更多甚至一点AS3的人都可能看到我做错了什么。

无论如何,我要做的是基本上创建我制作的这个方形对象的10个实例。我所要做的就是将它传递给x和y坐标以放置它并且它可以工作。所以我测试了我是否只做:

var testsquare:Bgsq;
testsquare = new Bgsq(0,0);
add(testsquare);

它工作得很好,就像我告诉它的那样在0,0处添加一个正方形,但是我想添加其中的10个,然后移动下一个创建25 px到右边的那个(因为每个正方形是25px)

我的问题是我只看到1个方格,就像它只有1个实例一样。

任何人都可能知道我可能做错了什么?

var counter:int = 0;
var bgsqa:Array = new Array;

for (var ibgs:int = 0; ibgs < 10; ibgs++)
    {
    bgsqa[counter] = new Bgsq(0,0);
    bgsqa[counter].x += 25;
    add(bgsqa[counter]);
    counter++;
    }

2 个答案:

答案 0 :(得分:0)

for(var ibgs:int = 0; ibgs&lt; 10; ibgs ++)

{
bgsqa[counter] = new Bgsq(0,0);
bgsqa[counter].x = counter * 25;
add(bgsqa[counter]);
counter++;
}

它们从0开始,因此应用+=只需将25添加到0.这应该可以解决问题。

答案 1 :(得分:0)

你在这里犯了很多错误。

首先,您使用伪迭代器(计数器)通过循环访问数组元素,而不是使用迭代器(ibgs)。

其次,我没有看到你正在迭代的数组(bgsqa)中的任何内容。难怪你有问题。这是你应该做的。

var bgsqa:Array = [];
for(var i:int=0;i<10;i++)
{
    var bgsq:Bgsq = new Bgsq(i * 25, 0);
    add(bgsq);
    bgsqa.push(bgsq);
}

如果您的帖子准确无误,那么应该这样做。