在这个程序中,我想为一列火车制作动画,当火车到达一些 x 坐标时,我想一个接一个地旋转每个火车车厢(矩形)。火车由五辆汽车组成,一个矩形代表一辆汽车。当火车到达某个位置时,我想为轨道变化设置动画(下轨道到上轨道)。所以我想在每辆车到达换轨位置时旋转它。我使用以下代码来执行此操作,但它会一次旋转所有汽车,第一辆汽车 45 度(正确),第二辆汽车 90 和第三辆汽车 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);
}
}
}
}