Original Post
Since the java forum is almost deserted, I posting my question here.
I have been programming a pacman game, and It''s been only a short while since I found out about active rendering. Before that I was using "passive" rendering. I have spent the past week trying to convert my code but without success. The thing is different people tell me different ways of doing active rendering, and now I am totally confused. If I could have a "simple" working animation example of active rendering, then I would be able to learn from it.
below is a simple animation code in passive rendering (The same one that I used for my game). can you please help me to convert it to active rendering. I hope I''m not asking for too much.
Thanx
The below code uses 7 GIF images for pacman animation.
-----------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PacmanM extends JPanel implements ActionListener
{
private ImageIcon images[];
private static final int TOTAL_IMAGES=7, ANIM_DELAY=50;
private int currentImage = 0;
private Timer animationTimer;
private int delay = 0;
public PacmanM(int delay)
{
this.delay = delay;
setupAnimation();
}
public PacmanM()
{
setupAnimation();
}
public void setupAnimation()
{
this.setSize(this.getPreferredSize());
this.images = new ImageIcon[TOTAL_IMAGES];
for (int i = 0; i < images.length; i++)
{
images[i] = new ImageIcon("pac"+i+".gif");
}
startAnimation();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.blue);
g.fillRect(0,0,this.getWidth(), this.getHeight());
if (images[currentImage].getImageLoadStatus() == MediaTracker.COMPLETE)
{
images[currentImage].paintIcon(this, g, 0, 0);
currentImage = (++currentImage) % TOTAL_IMAGES;
}
}
public void startAnimation()
{
if (animationTimer == null)
{
currentImage = 0;
animationTimer = new Timer( ANIM_DELAY + delay, this);
animationTimer.start();
}
else
{
if (!animationTimer.isRunning())
animationTimer.restart();
}
}
public void stopAnimation (){ animationTimer.stop(); }
public void actionPerformed(ActionEvent e){ repaint(); }
public Dimension getMinimumSize() { return getPreferredSize(); }
public Dimension getPreferredSize (){return new Dimension(400,400);}
public static void main(String[] args )
{
PacmanM PacMan = new PacmanM();
JFrame main = new JFrame("PacMan");
main.getContentPane().add(PacMan, BorderLayout.CENTER);
main.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
main.pack();
main.show();
}
}