卡屏java_Java drawImage到屏幕上一卡一卡的
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
public void run() {
while(T1.isAlive()==true){
try {Thread.sleep(FrameRate);} catch (InterruptedException e) {}
if(this.NowIndex
{++this.NowIndex;}
else{this.NowIndex=0;}
}
}
這是一組圖片的線程
NowIndex代表這組線程需要讀取的那張圖片的索引
每個Unit附帶一個名為ImgUnitGroup的類
每個ImgUnitGroup類有12個圖片組
每個圖片組有Name屬性,ImgUnitGroup類有一個尋找方法 根據(jù)12個元素的Name尋找到對應(yīng)圖片組 每個圖片組有g(shù)etNowImage來返回目前索引所對應(yīng)的圖片:
public BufferedImage getNowImage() {
return(ImgGroup.get(NowIndex));
}
每個圖片組有這樣一個方法啟動線程(初始化時調(diào)用該方法)來實現(xiàn)動畫圖片更換的效果:
public void StartFrame(){
if(T1.isAlive()==false)
this.T1.start();
}
這是圖片組的初始化方法:
public FAImageGroup(String Name,String Catalog,String Starting,Enum.ImageType Type) throws IOException{
this.GroupName=Name; //改圖片組名稱改為Name
String Str1 = "";
Str1=Catalog+Starting+"-"+"0"+".gif"; //讀取圖片
File f=new File(Str1);
if(f.exists()){
int n=0;
while(f.exists()){ //從這里開始讀取文件夾中所有圖片
ImgGroup.add(ImageIO.read(new File(Str1)));
n++;
Str1=Catalog+Starting+"-"+n+".gif";
f=new File(Str1);
}
this.Size=this.ImgGroup.size(); //設(shè)置圖片組大小
}
}
圖片刷新線程
public void run() {
while(true){
try {
Thread.sleep(this.RefreshRate);this.repaint();
} catch (InterruptedException e) {System.out.println("失敗");
} }
}
重寫的update
public void update(Graphics scr){
if(image==null){
image=(BufferedImage) createImage(this.getSize().width,this.getSize().height);
imgb=image.getGraphics();
}
paint(imgb);
scr.drawImage(image, 0, 0, this);
paint(scr);
}
重寫的paint
public void paint(Graphics Gra1){
//建立臨時緩沖圖片
image=new BufferedImage(1000,600,BufferedImage.TYPE_3BYTE_BGR);
imgb=image.getGraphics();
int n=0;
while(n
imgb.drawImage(AllUnit.getAllUit().get(n).getNowImage(), AllUnit.getAllUit().get(n).getPosition().x, 600-AllUnit.getAllUit().get(n).getPosition().y, this);
n++;
System.out.println(n);
} //輸出到屏幕
Gra1.drawImage(image, 0, 0, this);
}
求教
總結(jié)
以上是生活随笔為你收集整理的卡屏java_Java drawImage到屏幕上一卡一卡的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 徐起:真我GT5 Pro拒绝挤牙膏 还有
- 下一篇: realme 真我 GT5 Pro 手机