怎样消除闪烁? 使用双缓冲技术呀,很多java入门书中应该都有过介绍的呀,先将要绘制的图象画到一个image上之后再将这个image画到背景上即可 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 支持weixia(wx) ,不过,要注意paint 和 repaint() 的实现, 这位weixia老大,我现在没有时间去啃书本了,你能不能把这个方法说的具体一点啊 ! //DynamicImage.javaimport java.awt.*;import java.applet.Applet;import java.applet.AudioClip;public class DynamicImage extends Applet implements Runnable{ Image mmImg; Thread imageThread=null; AudioClip bg_sound; int x,y; boolean threadRunning; boolean brk=true,brk2=true,brk3=true; Image OffScreenImage;//用来绘图的地下图片 Graphics OffScreenGraphics;//用它的方法来绘图 public void init(){ mmImg=getImage(getDocumentBase(),"images/beauty.jpg"); x=-156;y=-156; bg_sound=getAudioClip(getCodeBase(),"audio/spacemusic.au"); threadRunning=true; OffScreenImage=createImage(size().width,size().height); OffScreenGraphics=OffScreenImage.getGraphics(); } public void start(){ bg_sound.loop(); if(imageThread==null){ imageThread=new Thread(this); imageThread.start(); } } public void run(){ while(threadRunning){ //控制的图片移动 if(brk==true){ if(y==156) brk=false; y=y+2; if(brk2==true){ x=x+2;if(x==0) brk2=false; } if(brk2==false){ x=x-2;if(x==-156) brk2=true; } } if(brk==false){ if(y==-156) brk=true; y=y-2; if(brk3==true){ x=x+2;if(x==0) brk3=false; } if(brk3==false){ x=x-2;if(x==-156) brk3=true; } } repaint(); try{imageThread.sleep(100);} catch(InterruptedException e){} } } public void pleaseStop(){ threadRunning=false; } public void stop(){ if(bg_sound!=null) bg_sound.stop(); } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ setBackground(Color.white); OffScreenGraphics.drawImage(mmImg,x,y,this); OffScreenGraphics.drawImage(mmImg,-x,-y,this); g.drawImage(OffScreenImage,0,0,this); }} 老大,我这个不是在applet中实现的 ,而是在application中实现的啊!我把图片绘制到窗体设计器上时,是通过向窗体设计器上添加private void Form1_paint(Object source,PaintEvent e){}这个方法来实现的! 我真的很感激wes109(我想飞),但是我用的是WFC控件,即:import com.ms.wfc.*;而不是用java的awt包中的东西,所以你给我的代码可能对我没有什么用,但是我还是很感激你的帮助,如果你知道怎么使用WFC控件来实现我的这个功能,还请你不吝赐教! 非常感谢各位老大的帮忙,可是我的程序是用application结合WFC控件来实现的,我开始没有说清楚是我的错,希望大家大人不计小人过还能帮我解决这个问题!如果我说话有什么不到指之处请大家原谅我,我虚心求教没有任何别的意思! 关于 成员实例变量 的一句话卡壳了,特请教 linux下如何获取本机所有IP? 什么是JAVA卡 新手报道, 求教 求一个返回单例模式的interface? 请问如何得到一个frame 中个个panel 的显示尺寸 大家帮忙看看, 是什么问题?怎么解决!!!救急啊!!!! 为什么JBuilder中代码区总出现光标定位不准的毛病 子类转成父类的问题,,和接口有关,我也不知道怎么描述了 在Java中什么称为属性 救命啊!救命恩人啊你在哪?? 讨论一下 interface 的问题
import java.applet.Applet;
import java.applet.AudioClip;public class DynamicImage extends Applet implements Runnable{
Image mmImg;
Thread imageThread=null;
AudioClip bg_sound;
int x,y;
boolean threadRunning;
boolean brk=true,brk2=true,brk3=true;
Image OffScreenImage;//用来绘图的地下图片
Graphics OffScreenGraphics;//用它的方法来绘图
public void init(){
mmImg=getImage(getDocumentBase(),"images/beauty.jpg");
x=-156;y=-156;
bg_sound=getAudioClip(getCodeBase(),"audio/spacemusic.au");
threadRunning=true;
OffScreenImage=createImage(size().width,size().height);
OffScreenGraphics=OffScreenImage.getGraphics();
}
public void start(){
bg_sound.loop();
if(imageThread==null){
imageThread=new Thread(this);
imageThread.start();
}
}
public void run(){
while(threadRunning){
//控制的图片移动
if(brk==true){
if(y==156) brk=false;
y=y+2;
if(brk2==true){
x=x+2;if(x==0) brk2=false;
}
if(brk2==false){
x=x-2;if(x==-156) brk2=true;
}
}
if(brk==false){
if(y==-156) brk=true;
y=y-2;
if(brk3==true){
x=x+2;if(x==0) brk3=false;
}
if(brk3==false){
x=x-2;if(x==-156) brk3=true;
}
}
repaint();
try{imageThread.sleep(100);}
catch(InterruptedException e){}
}
}
public void pleaseStop(){
threadRunning=false;
}
public void stop(){
if(bg_sound!=null)
bg_sound.stop();
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
setBackground(Color.white);
OffScreenGraphics.drawImage(mmImg,x,y,this);
OffScreenGraphics.drawImage(mmImg,-x,-y,this); g.drawImage(OffScreenImage,0,0,this);
}
}
我把图片绘制到窗体设计器上时,是通过向窗体设计器上添加
private void Form1_paint(Object source,PaintEvent e)
{
}
这个方法来实现的!
import com.ms.wfc.*;
而不是用java的awt包中的东西,所以你给我的代码可能对我没有什么用,但是我还是很感激你的帮助,如果你知道怎么使用WFC控件来实现我的这个功能,还请你不吝赐教!