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;

0 の場合x、fgLayers[0] = 5 - 0 - 1 つまり 4 です。

1 の場合xfgLayers[1] = 5 - 1 - 1 つまり 3 です。

ただし、ループ内のブロックはfor1 回だけ実行されるため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 に答える