还好,不要拖动。用线程实现,再加上双缓存。
例子,你可以在一个JLabel中加入图片,然后让整个Label平滑移动。效果就出来了。我做过这种类似的动画。
例子,你可以在一个JLabel中加入图片,然后让整个Label平滑移动。效果就出来了。我做过这种类似的动画。
解决方案 »
- 编程思想中关于线程启动的一个疑问
- 谁有Together6.0的注册码 能不能分享一下?
- 怎么理解这句话
- 想根据数据库的子段,自动生成一个具有Lable,TextField,button的界面用作数据的录入,数据库的表有很多!
- [请教]关于汉字(HZ)编码的介绍,或者注意点!!!
- 最快求一算法!
- applet的安全问题。。一样的内容,为什么有的不需要安全文件?
- 如何取得一封邮件区别与其他邮件的ID
- 哪有JAVA例程下载?尤其是for Solaris的!!!
- Apache lucene RangeQuery jar包
- 我的程序为什么需要Tomcat重启一次后再能正常运行?(jsp+javaBeans+Oracle)
- 字符串str1赋值给字符串str2,怎么赋的是句柄不是串值?问题是赋完以后我要将str1清空啊!搞不懂,呜呜呜~~~
还有,重画窗口是那个函数?!我是新人,不好意思。
画图我用的paintComponent。不知道重画用那个。
import java.awt.*;
public class MoveDemo extends java.applet.Applet implements Runnable{
Image offScreenImg;
Graphics offScreenG;
MediaTracker tracker;
Image walkerImgs[]=new Image[5];
Image currentImg;
int xpos,ypos=0;
int walk_step=20;
int delay=250;
Thread runThread;
Image bgImage;
int applet_width,applet_height;
int birdImg_width;
public void init(){
tracker=new MediaTracker (this);
for(int i=0;i<walkerImgs.length;i++){
walkerImgs[i]=getImage(getCodeBase(), "images/bu"+i+".gif");
tracker.addImage(walkerImgs[i],0);
}
bgImage=getImage(getCodeBase(),"images/"+"dune.gif");
tracker.addImage(bgImage,0);
applet_width=size().width;
applet_height=size().height;
try{ offScreenImg=createImage(applet_width,applet_height);
offScreenG=offScreenImg.getGraphics();
}catch(Exception e){offScreenG=null;}
}
public void start(){
if(runThread==null){
runThread=new Thread(this);
runThread.start();
}
}
public void stop(){
if(runThread!=null){
runThread.stop();
runThread=null;
}
}
public void run(){
try{tracker.waitForID(0); }catch(InterruptedException e){return;}
birdImg_width=walkerImgs[0].getWidth(this);
int i=0;
while(true){
for(xpos=birdImg_width;xpos<=applet_width;xpos+=walk_step){
currentImg=walkerImgs[i]; repaint();
i=(i+1)%walkerImgs.length;
try{Thread.sleep(delay);} catch(InterruptedException e){}
}
}
}
public void paint(Graphics g){g.drawImage(bgImage,0,0,this);
g.drawImage(currentImg,xpos,ypos,this);
}
public void update(Graphics g){
if(offScreenG!=null){paint(offScreenG);
g.drawImage(offScreenImg,0,0,this);
}
else paint(g);
}
}