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 像素)?基本上,就像用动画向下滑动图像一样?然后停下来,然后回到原来的位置。

我正在使用 Applet,并希望动画重复循环。谢谢。

4

1 回答 1

1

你需要有一个全局变量,或者某个地方的另一个变量,这表明......

  1. 图片需要移动
  2. 它已经在 Y 方向移动了多远
  3. 它朝哪个方向(向上或向下)

当你有这个时,你需要在你的paint()方法中添加代码来在正确的位置绘制图像。

您还需要一个TimerThread,它将每隔几毫秒告诉组件repaint(),并更改您的全局变量,以便它将重新绘制得更低/更高。

所以,作为一个例子,你可能有一些像这样的全局变量......

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);like 以包括 yPosition ...

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

这至少应该为您指明正确的方向。

于 2012-05-21T14:00:29.313 回答