所以我有这个代码,我试图弄清楚地图中有多少个地面层:
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)但是这也没有用。
答案 0 :(得分:2)
x
正在增加,因此layerNum - x - 1
当然会减少。我不确定你想要实现什么,但是你可以改变你的for循环来倒退。或者你可以完全改变layerNum - x - 1
。
答案 1 :(得分:1)
fgLayers[x] = layerNum - x - 1;
当x
为0时,fgLayers [0] = 5 - 0 - 1为4。
x
为1时fgLayers [1] = 5 - 1 - 1为3。
但for
循环中的块只执行一次,因此您只能将4
作为输出。
答案 2 :(得分:1)
而不是
fgLayers[x] = layerNum - x - 1;
使用
fgLayers[x] = index + x;
这会产生你描述的结果,但是你在这里尝试做的事情并不清楚。
您还需要将数组声明更改为new int[layerNum - index];
答案 3 :(得分: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处制作循环,以便下一层并从那里开始增加。