0

所以我有这段代码,我试图找出地图中有多少前景层:

    int layerNum=5 //in the current map it has 5 layers
    int index = 3 //in the current map
    fgLayers = new int[layerNum - (index + 1)];
    for (int x = 0; x < fgLayers.length; x++) {
        fgLayers[x] = layerNum - x - 1;
        Gdx.app.log(ChromeGame.LOG, fgLayers[x] + "");
    }

但是,它将值向后放入 fgLayers 数组中,因此不是 3,4,而是 4,3。我需要它以正确的顺序排列,因为每一层上都有某些图像,当以不同的顺序放置时看起来不合适。

不幸的是,我看不到在这段代码中哪里出错了,我尝试在 for 循环中切换它的开始位置(从 fgLayers.length 开始,在 0 结束),但这也不起作用。

4

4 回答 4

2

x正在增加,所以当然layerNum - x - 1会减少。我不确定您要达到什么目的,但是您可以将 for 循环更改为倒退。或者你可以layerNum - x - 1完全改变。

于 2013-08-11T05:43:31.610 回答
1
fgLayers[x] = layerNum - x - 1;

什么时候x是 0 fgLayers[0] = 5 - 0 - 1,即 4。

什么时候x是 1 fgLayers[1] = 5 - 1 - 1,即 3。

但是for循环中的块只执行一次,所以你应该只得到4输出。

于 2013-08-11T05:42:56.920 回答
1

代替

fgLayers[x] = layerNum - x - 1;

采用

fgLayers[x] = index + x;

这将产生您描述的结果,但是您在这里尝试做什么还不清楚。

看起来您还需要将数组声明更改为new int[layerNum - index];

于 2013-08-11T05:43:18.717 回答
1

因此,使用 JLRishes 答案我对其进行了一些修改以使用我的代码

    int topLayerStart = index + 1;
    fgLayers = new int[layerNum - topLayerStart];

    for (int x = 0; x < fgLayers.length; x++) {
        fgLayers[x] = x + topLayerStart;
        Gdx.app.log(ChromeGame.LOG, fgLayers[x] + "");
    }

在索引 + 1 处制作循环,以便下一层并​​从那里增加。

于 2013-08-11T19:38:59.113 回答