DOUBLEBUFFER
Publicado por Diego (7 intervenciones) el 16/12/2006 19:19:04
Hola vengo haber si alguien me puede explicar como utilizo el double buffer en aplicaciones para que no me parpadee cuando haga un movimiento por ejemplo en este codigo simple que hize todo el tiempo me parpadea cuando me muevo con las teclas direccionales =) AYUDA....
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Libert extends Canvas{
static Libert crack;
static int x=200,y=100;
public static void main(String[] args) throws IOException{
Frame fushi = new Frame();
fushi.setBounds(0, 0, 300, 300);
crack= new Libert(){
public void paint(Graphics xiao){
int ancho=1024;
int alto=768;
xiao.setColor(Color.BLACK);
xiao.fillRect(1, 1, ancho-1, alto-1);
xiao.draw3DRect(0, 0, ancho-1, alto-1, false);
xiao.setColor(Color.YELLOW);
xiao.fillOval(x, y, 10,10);
}
};
fushi.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0); }} );
fushi.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent xiaoxiao){
switch (xiaoxiao.getKeyCode()) {
case KeyEvent.VK_UP :
if(y==1)
{
y=1;
}
else {y-=1;}
crack.repaint();
break;
case KeyEvent.VK_LEFT :
if(x==0){
x=0;}else{
x-=1;}
crack.repaint();
break;
case KeyEvent.VK_RIGHT :
if(x==280){
x=280;}
else{
x+=1;}
crack.repaint();
break;
case KeyEvent.VK_DOWN :
if(y==263){
y=263;}
else{
y=y+1;}
crack.repaint();
break;
} }} );
crack.requestFocus();
fushi.add(crack);
fushi.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Libert extends Canvas{
static Libert crack;
static int x=200,y=100;
public static void main(String[] args) throws IOException{
Frame fushi = new Frame();
fushi.setBounds(0, 0, 300, 300);
crack= new Libert(){
public void paint(Graphics xiao){
int ancho=1024;
int alto=768;
xiao.setColor(Color.BLACK);
xiao.fillRect(1, 1, ancho-1, alto-1);
xiao.draw3DRect(0, 0, ancho-1, alto-1, false);
xiao.setColor(Color.YELLOW);
xiao.fillOval(x, y, 10,10);
}
};
fushi.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0); }} );
fushi.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent xiaoxiao){
switch (xiaoxiao.getKeyCode()) {
case KeyEvent.VK_UP :
if(y==1)
{
y=1;
}
else {y-=1;}
crack.repaint();
break;
case KeyEvent.VK_LEFT :
if(x==0){
x=0;}else{
x-=1;}
crack.repaint();
break;
case KeyEvent.VK_RIGHT :
if(x==280){
x=280;}
else{
x+=1;}
crack.repaint();
break;
case KeyEvent.VK_DOWN :
if(y==263){
y=263;}
else{
y=y+1;}
crack.repaint();
break;
} }} );
crack.requestFocus();
fushi.add(crack);
fushi.setVisible(true);
}
}
Valora esta pregunta


0