Player を 32 x 32 のタイルに移動するクラスの関数があります。ローカルの x 値と y 値は、(1,0)、(0,1)、(-1,0)、または (0,-1) を参照します (移動方向を参照)。sprites は、歩行用のさまざまなスプライトを参照するバッファリングされた画像の配列です。Player.x と Player.y はプレーヤーの現在のタイル座標で、miniX と miniY は画像がシフトされるピクセルの量です。Swing.player は、画像を含む JPanel です。currentSprite は、現在使用されているにもかかわらずです。
switch (2 * x + y) {
case 2:
Player.miniX = 4;
currentSprite = sprites[10];
Swing.player.repaint();
//pause
Player.miniX = 8;
currentSprite = sprites[11];
Swing.player.repaint();
//pause
Player.miniX = 12;
Swing.player.repaint();
currentSprite = sprites[10];
Swing.player.repaint();
//pause
Player.miniX = 16;
currentSprite = sprites[11];
Swing.player.repaint();
//pause
Player.miniX = 20;
currentSprite = sprites[10];
Swing.player.repaint();
//pause
Player.miniX = 24;
currentSprite = sprites[11];
Swing.player.repaint();
//pause
Player.miniX = 28;
currentSprite = sprites[10];
Swing.player.repaint();
//pause
Player.miniX = 0;
Player.x += 1;
currentSprite = sprites[9];
break;
case 1:
//omitted as is same as above
break;
case -1:
//omitted as is same as above
break;
case -2:
//omitted as is same as above
break;
}
各シフトの間に数ミリ秒間一時停止する最良の方法は何でしょうか?