0

描いた後、どうすれば画像を動かすことができるのでしょうか?

画像を描画するための私のコードは次のとおりです。

public int probeX = 500;
public int Minerals = 400;
public int drawProbeA, drawProbe = 0;

public void init() {
   // Images Call
   probe = getImage(getDocumentBase(), "image/probe.png");
}

public void paint(Graphics g) {
   if (drawProbe == 1) {
      for (int k = 0; k < drawProbeA; k++) {

         g.drawImage(probe, probeX, 474, 50, 50, this);
         probeX += 50;
      }
      probeX = 500;
   }
}

public boolean mouseDown(Event e, int x, int y) {
   // Clicking on the probe icon
   if (x > 1068 && x < 1119 && y > 785 && y < 832 && onNexus == 1
         && Minerals >= 50) {
      drawProbeA += 1;
      drawProbe = 1;
      Minerals -= 50;
   }

   return true;
}

画像を描画した後、アイコンを押すと画像がy軸(50ピクセルなど)を自動的に下に移動するようにするにはどうすればよいですか?基本的に、アニメーションで画像を下にスライドさせるようなものですか?そして、停止してから元の場所に戻ります。

アプレットを使用していますが、アニメーションを繰り返しループさせたいです。ありがとう。

4

1 に答える 1

1

グローバル変数、またはどこかに別の変数がある必要があります。これは、...

  1. 画像を移動する必要があります
  2. Y方向にどれだけ移動したか
  3. どちらの方向に進んでいるか(上または下)

paint()これがある場合は、正しい場所に画像を描画するためのコードをメソッドに追加する必要があります。

また、コンポーネントに数ミリ秒ごとに通知するTimerorが必要であり、グローバル変数を変更して、コンポーネントを上下に再描画します。Threadrepaint()

したがって、少し例として、このようなグローバル変数があるかもしれません...

int yPosition = 0;
boolean goingDown = true;

アニメーションを開始する必要がある場合Timerは、次の呼び出しを何度も繰り返すを開始します...

if (goingDown == true){
    // if we've gone down 50 pixels, start going up again
    if (yPosition <= 0){
        goingDown = false;
        yPosition++;
    }
    else {
        yPosition--; // move it down 1 pixel
    }
}
else {
    // if we're going up and we reach 0, go down again
    if (yPosition >= 50){
        goingDown = true;
        yPosition--;
    }
    else {
        yPosition++; // move it up1 pixel
    }
}

component.repaint(); // this will call the paint() method

ペイント方法ではなく、画像を別の位置に描画する必要があります。g.drawImage(probe,probeX,474,50,50,this);yPositionを含めるようにいいねを変更するだけです...

g.drawImage(probe,probeX,474+yPosition,50,50,this);

これは少なくともあなたを正しい方向に向けるべきです。

于 2012-05-21T14:00:29.313 に答える