1. 文件夹中存有多幅.bmp格式的图,在Java中,循环调用repaint()显示这些图片,来显示动画效果。
代码如下, 方法一的问题是sleep必须足够长(要求不大于50ms),否则有些图会被跳过去不被显示。方法二的延迟短,但是问题是屏幕闪烁。有没有办法使其中一个满足要求。
方法一:
public void paint(Graphics g){
super.paint(g);
while(condition){
g.drawImage(//...修改下一次显示的图片
try {
Thread.sleep(50);
} catch(InterruptedException ex) {}
repaint();
}
方法二:
new Thread(new Runnable(){
public void run(){
for( int pic=0; pic<picNum; pic++ ){
//...修改下一次显示的图片号
Done = false;
repaint();
while(!Done) { //重写paint()时,会把它设置为true,保证每幅图都显示
Thread.sleep(10);
}
}
}).start();
2. 双显示器,想在第二个显示屏全屏显示动画,以下代码运行不稳定,有时候图像框并不显示。
this.setUndecorated(true); //全屏显示
GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
devices[0].setFullScreenWindow(this);
|