2

ゲーム用の単純なタイル システムを作成しようとしています。テスト タイルを作成し、5 つのタイルを並べてペイントしようとしています。paintComponent5 からカウントダウンし、1 つのタイルを描画し、現在の x 値に 10 (タイルのサイズ) を追加するたびに、while ステートメントを作成しました。しかし、何らかの理由でタイルが表示されません。while ステートメントをコメントアウトすると、1 つのタイルが表示されます。そのため、画像が読み込まれています。何らかの理由で while ステートメントが描画を台無しにします。助けていただければ幸いです。

ここに私のpaintComponentsからの私のコードがあります

  • 変数 numOfTiles = 5
  • 変数 tileStartx = 100;
  • 変数 selectedTile は私のイメージです。

public void paintComponent(Graphics g){
    super.paintComponent(g);
    if(tileToDraw != null){
        while(numOfTiles > 0){
            System.out.println(tileStartx);
            g.drawImage (chosenTile, tileStartx, tileStarty, this);
            tileStartx += 10;
            numOfTiles--;
        }
    }
}
4

2 に答える 2

3

変化する

while(numOfTiles > 0){ 

// or the more modern variant shown by Kumar
for (int count=0; count<numOfTiles; count++) { 

そして削除します:

    numOfTiles--;

説明。numOfTiles最初のペイントで 0 に減っていて、リセットされないのではないかと思います。forループは、値を決して変更しないことでそれを処理します。

Walter の微調整にも注意してください。

    g.drawImage (chosenTile, tileStartx + (count * 10), tileStarty, this); 

それ以外の:

    g.drawImage (chosenTile, tileStartx, tileStarty, this);
    tileStartx += 10;
于 2012-06-14T10:00:04.150 に答える
2

これを試して、

for (int i : numOfTiles){

            System.out.println(tileStartx);
            g.drawImage (chosenTile, tileStartx, tileStarty, this);
            tileStartx += 10;

        }
于 2012-06-14T10:06:11.317 に答える