用双缓冲来实现,就是定义一个Image
Image img=createImage(int width,int height);
然后在这个img上画图
Graphics imgg=img.getGraphics();
imgg.drawImage(……);
…………
最后把在缓冲区已经画好的图在applet上画出来
public void paint(Graphics g) {
g.drawImage(img,0,0,this);
}
Image img=createImage(int width,int height);
然后在这个img上画图
Graphics imgg=img.getGraphics();
imgg.drawImage(……);
…………
最后把在缓冲区已经画好的图在applet上画出来
public void paint(Graphics g) {
g.drawImage(img,0,0,this);
}
img=this.getImage(getDocumentBase(),“p1.jpg”);
g.drawImage(img,x,y,this);
通过在线程RUN()中改变x的坐标来实现图片的滑动,
现在有一p2.gif想把它加载到applet底端,并且响应鼠标点击,来控制p1的滑动。但是,p1滑动时,p2有闪烁。也许方法不对,请指教,楼上讲的试了似乎不太行
这个的图片的移动更新量可不小,我用这个方法都没有发现闪,你看看
http://xiruo.cn.st
img=this.getImage(getDocumentBase(),“p1.jpg”);
Image im=createImage(img.getWidth(this),img.getHeight(this));
Graphics gg=im.getGraphics();
gg.drawImage(img,0,0,this);
g.drawImage(im,x,y,this);
gg.drawImage(img,0,0,this);
g.drawImage(im,x,y,this);
放在哪里,paint()中还是init()中?
不管怎样,谢谢xiruo,散分。
package tony;import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class h extends Applet implements Runnable{
boolean isStandalone = false;
int x=0;
int y=0;
Image img1;
Image img2;
Image img3;
Image test;
boolean flag=true;
Thread scroller=null; //Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
} //Construct the applet
public h() {
}
//Initialize the applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
img1=getImage(getDocumentBase(),"p1.jpg");
img3=getImage(getDocumentBase(),"1.gif"); }
public void start(){
if(scroller==null){
scroller=new Thread(this);
scroller.start();
}
}
public void run(){
while(true){
repaint();
x--;
try{
Thread.sleep(20);
}
catch(InterruptedException ex)
{}
}
}
public void stop(){
if(scroller!=null){
scroller.stop();
scroller=null;
}
}
public void update(Graphics g)
{
g.drawImage(img1,x,0,this);
}
public void paint(Graphics g){
update(g);
}
public String getAppletInfo() {
return "Applet Information";
}
public String[][] getParameterInfo() {
return null;
}
}
p1是一张移动的大图,g1是一个小的向后指向的图标,我想把g1加上p1上去,响应鼠标的点击来实现控制p1的左移。如果需要图,我可以发给你。