--- GameWindow.java-andy Thu Mar 28 12:01:56 2002 +++ GameWindow.java Thu Mar 28 12:01:55 2002 @@ -96,11 +96,34 @@ BackMgr.SetupBackground(); //drawing area and offscreen goo - drawingArea = new JPanel(); + drawingArea = new GamePanel(); drawingArea.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); pane.add(drawingArea); drawingArea.setBounds(0,0,WINDOW_WIDTH, WINDOW_HEIGHT); } + + private class GamePanel extends JPanel { + public void update(Graphics g){ + paint(g); + } + public void paint(Graphics g){ + //check for offScreen eating itself or first time through + if (offScreen == null) { + //initiallize drawing and all that crap + System.out.println("Initializing Drawing Setup"); + offScreen = createImage(drawingArea.getSize().width, drawingArea.getSize().height); + offScreenBrush=(Graphics2D)(offScreen.getGraphics()); + offScreenBrush.setRenderingHint( + RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_SPEED); + offScreenBrush.setRenderingHint( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_OFF); + } + + g.drawImage(offScreen,0,0,null); + } + } //listen for unrouted messages and print them public void actionPerformed (ActionEvent ae) { @@ -137,43 +160,15 @@ RenderingLoop(); } - public void update(Graphics g) { - paint(g); - } - public void RenderingLoop () { + if(offScreen == null) /* can't render with nowhere to draw */ + return; //System.out.println("GOT A GAME EVENT"); - //check for offScreen eating itself or first time through - if (offScreen == null) { - //initiallize drawing and all that crap - System.out.println("Initializing Drawing Setup"); - offScreen = createImage(drawingArea.getSize().width, drawingArea.getSize().height); - offScreenBrush=(Graphics2D)(offScreen.getGraphics()); - offScreenBrush.setRenderingHint( - RenderingHints.KEY_RENDERING, - RenderingHints.VALUE_RENDER_SPEED); - offScreenBrush.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_OFF); - } - //clear the offscreen buffer - IF WE DRAW the WHOLE SCREEN, then DON'T - //offScreenBrush.clearRect(0,0,offScreen.getWidth(null), offScreen.getHeight(null)); - - //if we haven't made our new stuff yet - if (drawingBrush == null) { - drawingBrush = (Graphics2D)(drawingArea.getGraphics()); - drawingBrush.setRenderingHint( - RenderingHints.KEY_RENDERING, - RenderingHints.VALUE_RENDER_SPEED); - drawingBrush.setRenderingHint( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_OFF); - } - //Inside main rendering loop - BackMgr.UpdateBackground(); + //Inside main rendering loop + BackMgr.UpdateBackground(); - drawingBrush.drawImage(offScreen, 0, 0, null); + drawingArea.repaint(); } public Graphics2D GetOffScreenBrush() {