0

这段代码旨在将一个名为 BasicGrid 的影片剪辑实例放置到我的舞台上 25 次,然后如果新影片剪辑的 X 坐标超过 128,它将开始将它们放置在新的一行上。

但由于某种原因,无论我尝试什么,我都无法让它工作,它所做的只是将 25 个方块放在完全相同的位置,任何建议/帮助将不胜感激,谢谢!

for (var i:uint; i <= 25; i++) {
    var newOpenGrid:BasicGrid = new BasicGrid();
    newOpenGrid.x + 32;
    if(newOpenGrid.x > 128) {
        newOpenGrid.x = 32;
        newOpenGrid.y += 32;
    }
    addChild(newOpenGrid);
    trace(this.numChildren);
    trace("X: " + newOpenGrid.x);
    trace("Y: " + newOpenGrid.y);
    trace("i: " + i);
}
4

2 回答 2

1

您还可以使用嵌套的 for 循环:

var ySpace:uint = 32;
var xSpace:uint = 32;
var yStart:uint = 32;
var xStart:uint = 32;
for(var row:uint = 0; row < 5; row++) {
    for(var col:uint = 0; col < 5; col++) {
        var newOpenGrid:BasicGrid = new BasicGrid();
        newOpenGrid.x = xStart + col * xSpace;
        newOpenGrid.y = yStart + row * ySpace;
        addChild(newOpenGrid);
    }
}
于 2013-02-17T20:00:45.593 回答
0

解决了这个问题,我使用了变量来获取方块的旧 X 和 Y 值,这让新方块知道将自己放置在哪里,如果它需要开始新的一行,这里是修改后的代码。

for (var i:uint; i <= 24; i++) {

    var newOpenGrid:BasicGrid = new BasicGrid();
    var gridX:int;
    var gridY:int;
    newOpenGrid.x = gridX;
    newOpenGrid.x += 32;
    newOpenGrid.y = gridY;
    if(newOpenGrid.x > 160) {
        newOpenGrid.x = 32;
        newOpenGrid.y += 32;
    }
    addChild(newOpenGrid);
    gridX = newOpenGrid.x;
    gridY = newOpenGrid.y;
    trace(this.numChildren);
    trace("X: " + newOpenGrid.x);
    trace("Y: " + newOpenGrid.y);
    trace("i: " + i);
    }
}
于 2013-02-17T17:32:14.033 回答