AS3 - 尝试放置5行5个方块

时间:2013-02-17 17:16:40

标签: actionscript-3 for-loop addchild

此代码用于将名为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);
}

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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);
    }
}