这是学校的作业,这是我的老师写的:
将图像加载到JCanvas,并让它多次重新绘制,每次绘制之间的间隔越来越短。一旦你有了100张图片,清除屏幕,然后重新开始。
这是我迄今为止的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
class MovingImages{
public static void main(String[]args){
JFrame frame = new JFrame("Printing Images");
frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCanvas canvas = new JCanvas();
frame.add(canvas);
frame.setVisible(true);
int x = 0;
int y = 0;
int num = 100;
BufferedImage image = canvas.loadImage("Earth.png");
while(num<=100 && num>0){
canvas.drawImage(image,x++,y++);
num--;
canvas.sleep(num);
if (num==0){
canvas.clear();
}
}
}
}
如有任何帮助,我们将不胜感激。
看起来您的代码正在做您所描述的事情"多次重新绘制自身,每次绘制之间的间隔越来越短";。
问题是,当你达到1而不是0时,你需要重置值,因为你的循环在达到0之前就停止了,因为&& num>0
:
//Change the number to 1 not 0:
if (num==1){
canvas.clear();
//Make sure you reset the values otherwise it will not loop again:
x = 0;
y = 0;
num = 100;
}
现在它应该根据需要循环。