Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (120)
games submitted by our members
Games in WIP (577)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  help with double buffer  (Read 1060 times)
0 Members and 1 Guest are viewing this topic.
Offline kyle225

Junior Newbie





« Posted 2011-01-23 00:32:31 »

I am starting to work with double buffering with BufferedStrategy and my screen doesn't clear. well here is my code.

StarHawk.class ( the main class)
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
@Override
   public void init() {
   }

   @Override
   public void update(long delta, Window w) {
      w.addMouseMotionListener(new MouseMotionListener(){
         @Override
         public void mouseDragged(MouseEvent paramMouseEvent) {}

         @Override
         public void mouseMoved(MouseEvent e) {
            x = e.getX();
            y = e.getY();
           
         }
         
      });
     
   }
   
   @Override
   public void render(Graphics2D g, Window w) {
      g.fillRect(x, y, 200, 200);
     
   }
   
   public static void main(String[] args) {
      GameContainer game = new GameContainer(new StarHawk());
      game.setScreenMode(1280, 1024, true);
      game.setTitle("Mini StarHawk Game");
      game.EscapeOnClose();
      game.startGame();
     
   }


GameContainer.class
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
public void startGame() {
      System.out.println(engineName+"Game Started"+getDate());
      setupListenerFrame();
      if(isFullscreen) {
         setFullScreen(dm);
      }
      frame.createBufferStrategy(2);         // frame is a JFrame
     
      new Thread(){
         public void run() {
            game.init();               // abstract method in StarHawk class
            isRunning = true;
            long lastLoopTime = System.currentTimeMillis();
            while(isRunning) {
               long delta = System.currentTimeMillis() - lastLoopTime;
               lastLoopTime = System.currentTimeMillis();
               Graphics2D g = getGraphics(); // gets graphics2D
               game.update(delta,getFullScreenWindow()); // abstract method in StarHawk class
               game.render(g,getFullScreenWindow());     // abstract method in StarHawk class
               g.dispose();
               update(); // update method
               
               try {Thread.sleep(10);} catch (InterruptedException e) {}
            }
           
         }
         
      }.start();
   }


update method from GameContainer.class
1  
2  
3  
4  
5  
6  
7  
8  
public void update() {
      Window window  = vc.getFullScreenWindow();
      if(window != null) {
         strategy = window.getBufferStrategy();
         if(!strategy.contentsLost()) {
            strategy.show();
         }
      }


getGraphics method from GameContainer.class
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
public Graphics2D getGraphics() {
        Window window = vc.getFullScreenWindow();
        if (window != null) {
            BufferStrategy strategy = window.getBufferStrategy();
            return (Graphics2D)strategy.getDrawGraphics();
        }
        else {
            return null;
        }
    }


i don't know what i did wrong. the screen doesn't flicker but it doesn't clear it.
Offline teletubo
« League of Dukes »

JGO Ninja


Medals: 48
Projects: 4
Exp: 8 years



« Reply #1 - Posted 2011-01-23 02:27:36 »

you should clear it by yourself, BufferStrategy does not do it automatically .
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
    @Override
    public void render(Graphics2D g, Window w) {
        g.setColor (clearColor);
        g.fillRect(0,0,screenWidth, screenHeight);
        g.setColor ( rectColor);

         // now start drawing stuff
        g.fillRect(x, y, 200, 200);
         
    }

Offline kyle225

Junior Newbie





« Reply #2 - Posted 2011-01-23 02:34:47 »

Thank you Smiley
I thought the buffer Strategy would do that but i was wrong.
instead of doing
 
1  
2  
3  
    g.setColor (clearColor);
    g.fillRect(0,0,screenWidth, screenHeight);
    g.setColor ( rectColor);


i did
1  
g.clearRect(0, 0, w.getWidth(), w.getHeight());

found that, that method worked instead
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline h3ckboy

JGO Coder


Medals: 5



« Reply #3 - Posted 2011-01-23 07:57:58 »

clearRect is shorter, but a lot of time, ur going to want to have another background than white. So if you have white that works great, but just keep in mind teletubo's way so that later on you'll be set
Offline Captain Awesome

Junior Duke


Medals: 2


Hi


« Reply #4 - Posted 2011-01-23 10:07:37 »

clearRect is shorter, but a lot of time, ur going to want to have another background than white. So if you have white that works great, but just keep in mind teletubo's way so that later on you'll be set

You can use g.setBackground(Color c); to change which color clearRect uses.
Offline h3ckboy

JGO Coder


Medals: 5



« Reply #5 - Posted 2011-01-23 19:42:17 »

touché Wink
Offline kyle225

Junior Newbie





« Reply #6 - Posted 2011-01-23 23:56:40 »

 thanks for the those tips. Smiley
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

theagentd (9 views)
2014-10-25 15:46:29

Longarmx (52 views)
2014-10-17 03:59:02

Norakomi (45 views)
2014-10-16 15:22:06

Norakomi (34 views)
2014-10-16 15:20:20

lcass (38 views)
2014-10-15 16:18:58

TehJavaDev (68 views)
2014-10-14 00:39:48

TehJavaDev (68 views)
2014-10-14 00:35:47

TehJavaDev (60 views)
2014-10-14 00:32:37

BurntPizza (73 views)
2014-10-11 23:24:42

BurntPizza (45 views)
2014-10-11 23:10:45
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!