【问题标题】:multiple instances of the same object spaced out using a loop is only creating one使用循环隔开的同一对象的多个实例仅创建一个
【发布时间】:2011-02-05 22:56:59
【问题描述】:

我很难正确地表达我的问题,所以如果它看起来令人困惑,我很抱歉。我也在使用 flash builder 中的 flixel 库。这可能不是那么重要,但可能任何比我了解更多甚至一点 AS3 的人都可能知道我做错了什么。

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

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

它工作正常,并在 0,0 处添加一个正方形,就像我告诉它的那样,但我想添加 10 个,然后将下一个创建 25 像素的正方形向右移动(因为每个正方形都是 25 像素)

我的问题是我只看到 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++;
    }

【问题讨论】:

    标签: arrays actionscript-3 object instantiation


    【解决方案1】:

    你在这里做错了很多。

    首先,您使用伪迭代器(计数器)通过循环访问数组元素,而不是使用迭代器(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);
    }
    

    如果你的帖子是准确的,那应该可以做到。

    【讨论】:

    • 我明白你对柜台说的话,我会解决这个问题。但这不会只是将正方形“bgsq”移动超过 25 个像素,所以当它加载时,我实际上只看到创建的第 10 个?我需要有 10 个独立的正方形,它们都以 25 像素间隔创建
    • 当你像这样循环时,你每次都在添加一个新项目。每个项目都被插入到一个存在于循环外部范围内的数组中,因此您可以在循环完成后访问所有项目。
    • nvm,我明白了!使用我的数组代码而不使用“外部”计数器就可以了!谢谢你帮助我意识到这一点!呵呵。
    • 如果您想通了,请将我的答案标记为答案。您刚刚发布的内容本质上是我在几分钟前发布的代码。
    • 我要去看看你好像漏掉了数组部分。使用数组旁边的 [ibgs] 不是必需的吗?这是我没有将其标记为答案的唯一原因,因为那部分很重要,我不想混淆。但如果它不使用 [] 就可以工作,那么我会删除我的并将 urs 标记为答案
    【解决方案2】:

    for (var ibgs:int = 0; ibgs

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

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

    【讨论】:

    • 好吧,第一个应该放在 0,0 然后第二个放在 (25,0) 计数器变量的点是代表一个新的实例名称,所以可以有多个副本相同的对象,所以它不只是继续移动原始对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多