0

私が作っているゲームでは、パワーアップをエアドロップにしたいと思っています。描いたものよりも大きく描きたい箱のイメージがあります。次に、空中から落としたように見えるように、画像を時間とともに徐々に小さくしていきます。私はうまくいくと思うこのコードを作成しましたが、何らかの理由でうまくいきません。

if(power.getPowerUp()){
   double crateX = (int) power.getX();
   double crateY = (int) power.getY();
   Image crate = power.getCrate();
   int crateW = crate.getWidth(null) + 100;
   int crateH = crate.getHeight(null) + 100;
   if(crateW > 64){
      g2d.drawImage(
         power.getCrate(), (int) crateX, (int) crateY, crateW, crateH, this );
      crateX += .5;
      crateX += .5;
      crateW -= 1;
      crateH -= 1;
   }
   else {
      g2d.drawImage(
         power.getCrate(), (int) crateX, (int) crateY, crateW, crateH, this );
   }
}

内部にこのメソッドがpaintComponent(Graphics g)あり、スレッドを使用してグラフィックを再描画します。うまくいかないのはなぜですか?別のクラスの値を使用することと関係がありますか? 徐々に小さくなるようにするにはどうすればよいですか?

4

1 に答える 1

0

メソッドが呼び出されるたびに変数crateWと変数を再作成しています。crateH次に、メソッドは if ブロックまたは else ブロックのいずれかに移動します。if ブロックに入った後は、else (必要なもの) には入りません。つまり、次にメソッドが呼び出されるとき、幅と高さは同じです。

于 2013-05-04T15:04:10.380 に答える