witam! probuje zrobic podwojne buforowanie przy pomocy setDoubleBuffered()
lub
JPanel panel = new JPanel(true);//true czyli buforowanie wlaczone
panel.add(obrazek);
ale jak zrobie
Image ludzik;
JPanel panel = new JPanel(true);
public void init(){
try{
ludzik =new ImageIcon(this.getClass().getResource("avsk/lud.png")).getImage();
}catch(Exception e){ System.out.println("Nie można wczytać obrazu");}
panel.add(ludzik);
}
wywala blad
a tego to juz calkiem nie wiem jak uzyc setDoubleBuffered()
prosze o pomoc
caly kod
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class a_avsk extends Applet implements KeyListener, Runnable{
private String tekst = new String( );
private String nr = new String( );
String src_kl = "avsk/klakier_p.png", pkt = "Punkty:";
int il_pkt, Ym=0, Yp=0, Xm=0, Xp=0, los = 0, ow_img;
int x = 400, y = 200, speed = 10, sek;
int xk = 0, yk = 0, ow_x, ow_y;
Image ludzik , klakier, owoc;
String name_ow;
Random losuj=new Random();
JPanel panel = new JPanel(true);//true czyli buforowanie wlaczone
@Override
public void init(){
Thread watek1=new Thread(this);
watek1.start();
Watek2 watek2=new Watek2();
watek2.start();
Watek3 watek3=new Watek3();
watek3.start();
addKeyListener(this);
requestFocus( );
setBackground(Color.white);
setSize(900,800);
//isDoubleBuffered(false);
//setDoubleBuffered(true);
try{
ludzik =new ImageIcon(this.getClass().getResource("avsk/lud.png")).getImage();
}catch(Exception e){ System.out.println("Nie można wczytać obrazu");}
}
@Override
public void paint(Graphics g){
super.paint(g);
//g.setDoubleBuffered(true);
g.setColor(Color.black);
g.drawString(tekst, 10, 40);
g.drawString(nr, 40, 80);
if(los == 0){
ow_x =losuj.nextInt(890);
ow_y =losuj.nextInt(750);
ow_img =losuj.nextInt(400);
if(ow_img < 100) name_ow = "avsk/jab.jpg";
else if(ow_img >= 100 && ow_img < 200) name_ow = "avsk/mysz.jpg";
else if(ow_img >= 200 && ow_img < 300) name_ow = "avsk/pies.jpg";
else if(ow_img >= 300) name_ow = "avsk/speed.jpg";
los = 1;
}
try{
owoc =new ImageIcon(this.getClass().getResource(name_ow)).getImage();
}catch(Exception e){ System.out.println("Nie można wczytać owoca"+name_ow);}
try{
klakier =new ImageIcon(this.getClass().getResource(src_kl)).getImage();
}catch(Exception e){ System.out.println("Nie można wczytać klakiera");}
g.drawImage(owoc,ow_x,ow_y,null); // owoc
g.drawImage(ludzik,x-17,y-80,null); // czlowiek
g.drawImage(klakier,xk,yk-98,null); // klakier
g.setColor(Color.black);
g.fillRect(0, 760, 900, 40);
g.setColor(Color.white);
g.drawString(pkt, 10, 780);
}
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if(key == 38){
Ym = 1;
Yp = 0;
}
else if(key == 40){
Yp = 1;
Ym = 0;
}
if(key == 37){
Xm = 1;
Xp = 0;
}else if(key == 39){
Xm = 0;
Xp = 1;
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if(key == 38 || key == 40){
Ym = 0;
Yp = 0;
}
if(key == 37 || key == 39){
Xp = 0;
Xm = 0;
}
}
public void run(){
int sp = 0;
while(true){
if(Ym > 0){
y--;
if(y-40 < 0) y = 760;
}else if(Yp > 0){
y++;
if(y-40 > 760) y = 0;
}
if(Xm > 0){
x--;
if(x < 0)x=900;
}else if(Xp > 0){
x++;
if(x > 900)x=0;
}
if(y <= yk && y >= yk-45 && x >= xk && x <= xk + 98) il_pkt=0;
if(y >= ow_y && y <= ow_y+40 && x >= ow_x && x <= ow_x + 40){
speed = 10;
if(ow_img < 100) il_pkt += 10;
else if(ow_img >= 100 && ow_img < 200) il_pkt += 15;
else if(ow_img >= 200 && ow_img < 300) il_pkt += 20;
else if(ow_img >= 300){
sp = 1;
sek = 0;
}
los = 0;
}
if(sp > 0 && sek <= 20){
speed =1;
} else{
sp = 0;
speed = 10;
}
// il_pkt++;
pkt = "Punkty: "+il_pkt+" czas: "+sek;
try {
Thread.sleep(speed);
} catch (InterruptedException ex) {}
//repaint();
}
}
class Watek2 extends Thread {
@Override
public void run(){
while(true){
if(y > yk){
yk++;
}else if(y < yk ){
yk--;
}
if(x > xk){
xk++;
src_kl = "avsk/klakier_p.png";
}else if(x < xk ){
xk--;
src_kl = "avsk/klakier_l.png";
}
try{
Thread.sleep(16);
}catch(Exception e){}
repaint();
}//koniec while
}//koniec metody run()
}//koniec klasy wew
class Watek3 extends Thread {
@Override
public void run(){
while(true){
sek++;
try{
Thread.sleep(1000);
}catch(Exception e){}
}//koniec while
}//koniec metody run()
}//koniec klasy wew
}
wiem ze to juz bylo ale tam bylo napisane dla zaawansowanych :)