このプログラムでは、列車をアニメートし、列車がx座標に到達したら、各車両(長方形)を1つずつ回転させます。電車は5台の車で構成され、長方形は車を表します。電車がどこかに到着したら、線路の変更(下の線路から上の線路へ)をアニメートしたいと思います。なので、線路変更場所に到着したら、各車を回転させたいと思います。これを行うために次のコードを使用しましたが、すべての車を一度に回転させ、最初の車を45度(正しい)、2番目の車を90度、3番目の車を135度回転させます...など。
コード:
private void drawLineBTrain(Graphics g){
Graphics2D gg = (Graphics2D) g;
for(int i = 0; i < b.getSize(); i++){
if(rotate){
gg.rotate(-Math.PI/4, b.getCar(i).getPosX(), b.getCar(i).getPosY());
}
gg.fillRect(b.getCar(i).getPosX(), b.getCar(i).getPosY(), 80, 24);
}
}
public void moveLineBTrain(Train t, boolean goRight){
if(goRight) {
b = t;
int x, y;
for(int i = 0; i < b.getSize(); i++) {
x = b.getCar(i).getPosX();
b.getCar(i).setPosX(++x);
if(x > ((getWidth() / 2) - 140) && x < ((getWidth() / 2) + 140)){
y = 490 + (int)( (double) (-100 * x) / 280 );
b.getCar(i).setPosY(y);
rotate = true;
}
}
} else {
b = t;
int x, y;
for(int i = 0; i < b.getSize(); i++) {
x = b.getCar(i).getPosX();
b.getCar(i).setPosX(--x);
if(x > ((getWidth() / 2) - 140) && x < ((getWidth() / 2) + 140)){
y = 490 + (int)( (double) ( -100 * (1344 - x) / 280 ));
b.getCar(i).setPosY(y);
}
}
}
}