建议使用图形双缓存
例程序:
import java.applet.Applet;
import java.awt.*;public class advertise extends Applet{
private Label prompt1, prompt2;
private double t;
private Choice choicePages;
private TextField inputTime;
private boolean judge = false;
private Image pic[];
private int totalImages = 30, currentImage = 0, sleepTime = 1000;
private Graphics gContext;
private Image buffer; public void init(){
prompt1 = new Label("Please choice how many advertisement page do you want to see:");
prompt2 = new Label("Enter how much time do you want to see each page:");
choicePages = new Choice();
inputTime = new TextField("1.0",4);
pic = new Image[totalImages];
buffer = createImage(800, 600);
gContext = buffer.getGraphics();
gContext.setColor(Color.white);
gContext.fillRect(0, 0, 800, 600); for(int i = 0; i<=29; i++){
pic[i] = getImage(getDocumentBase(), "PC"+(i+1)+".jpg");
choicePages.addItem(""+(i+1));
}
add(prompt1);
add(choicePages);
add(prompt2);
add(inputTime);
} public void start(){
gContext.drawImage(pic[0], 0, 0, this);
currentImage = 1;
} public void paint(Graphics g){
if(judge){
g.drawImage(buffer, 80, 60, this);
gContext.fillRect(0, 0, 800, 600);
gContext.drawImage(pic[currentImage], 0, 0, this); postEvent(new Event(this, Event.MOUSE_ENTER,""));
currentImage = ++currentImage%totalImages;
try{
Thread.sleep(sleepTime);
}
catch(InterruptedException e){
showStatus(e.toString());
}
repaint();
}
}
public boolean action(Event e, Object o){
if(e.target instanceof Choice)
totalImages = Integer.parseInt(choicePages.getSelectedItem());
if(e.target instanceof TextField)
{ t = Double.parseDouble(inputTime.getText());
sleepTime = (int)t*1000;}
judge = true;
return true;
}
public void update(Graphics g){
paint(g);
}
}
例程序:
import java.applet.Applet;
import java.awt.*;public class advertise extends Applet{
private Label prompt1, prompt2;
private double t;
private Choice choicePages;
private TextField inputTime;
private boolean judge = false;
private Image pic[];
private int totalImages = 30, currentImage = 0, sleepTime = 1000;
private Graphics gContext;
private Image buffer; public void init(){
prompt1 = new Label("Please choice how many advertisement page do you want to see:");
prompt2 = new Label("Enter how much time do you want to see each page:");
choicePages = new Choice();
inputTime = new TextField("1.0",4);
pic = new Image[totalImages];
buffer = createImage(800, 600);
gContext = buffer.getGraphics();
gContext.setColor(Color.white);
gContext.fillRect(0, 0, 800, 600); for(int i = 0; i<=29; i++){
pic[i] = getImage(getDocumentBase(), "PC"+(i+1)+".jpg");
choicePages.addItem(""+(i+1));
}
add(prompt1);
add(choicePages);
add(prompt2);
add(inputTime);
} public void start(){
gContext.drawImage(pic[0], 0, 0, this);
currentImage = 1;
} public void paint(Graphics g){
if(judge){
g.drawImage(buffer, 80, 60, this);
gContext.fillRect(0, 0, 800, 600);
gContext.drawImage(pic[currentImage], 0, 0, this); postEvent(new Event(this, Event.MOUSE_ENTER,""));
currentImage = ++currentImage%totalImages;
try{
Thread.sleep(sleepTime);
}
catch(InterruptedException e){
showStatus(e.toString());
}
repaint();
}
}
public boolean action(Event e, Object o){
if(e.target instanceof Choice)
totalImages = Integer.parseInt(choicePages.getSelectedItem());
if(e.target instanceof TextField)
{ t = Double.parseDouble(inputTime.getText());
sleepTime = (int)t*1000;}
judge = true;
return true;
}
public void update(Graphics g){
paint(g);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货