本意是通过通过事件处理改变i的值,结果发现不用改变,这个程序能够自动循环出现三张图片,而且开始换得快,最后换得慢,直至最后不变了。难道paint()会自动调用自己?可是为什么最后又会停止,而且开始和后来频率不一样呢?具体可以观察在控制台输出的i的值,一直在变,想不通!请帮助!
程序代码如下:
import java.awt.*;
import java.applet.*;
public class ImageDemo extends Applet {
Image i1,i2,i3;
int i=1;
public void init() {
i1 = getImage(getCodeBase(), "1.jpg");
i2 = getImage(getCodeBase(), "2.jpg");
i3 = getImage(getCodeBase(), "3.jpg");
i1=i1.getScaledInstance(800,600,i1.SCALE_AREA_AVERAGING);//缩放显示
i2=i2.getScaledInstance(800,600,i2.SCALE_AREA_AVERAGING);
i3=i3.getScaledInstance(800,600,i3.SCALE_AREA_AVERAGING);
}
public void paint(Graphics g)
{
System.out.println(i);
switch(i)
{ case 1:
g.drawImage(i1,20,20,this);
i=i+1; //i增一
break;
case 2:
g.drawImage(i2,20,20,this);
i=i+1; break;
case 3:
g.drawImage(i3,20,20,this);
i=i+1; break;
default:
i=1;
break;
}
}
}
程序代码如下:
import java.awt.*;
import java.applet.*;
public class ImageDemo extends Applet {
Image i1,i2,i3;
int i=1;
public void init() {
i1 = getImage(getCodeBase(), "1.jpg");
i2 = getImage(getCodeBase(), "2.jpg");
i3 = getImage(getCodeBase(), "3.jpg");
i1=i1.getScaledInstance(800,600,i1.SCALE_AREA_AVERAGING);//缩放显示
i2=i2.getScaledInstance(800,600,i2.SCALE_AREA_AVERAGING);
i3=i3.getScaledInstance(800,600,i3.SCALE_AREA_AVERAGING);
}
public void paint(Graphics g)
{
System.out.println(i);
switch(i)
{ case 1:
g.drawImage(i1,20,20,this);
i=i+1; //i增一
break;
case 2:
g.drawImage(i2,20,20,this);
i=i+1; break;
case 3:
g.drawImage(i3,20,20,this);
i=i+1; break;
default:
i=1;
break;
}
}
}
你上面定义了一个成员变量赋值了是1!难后在后面的swith()条件为i;i的值应该是恒为1!看看是不是这里的问题!
至于效率变化问题,楼主自己结合当时的实际情况想想吧~^_^