Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.image.BufferedImage;
- import java.awt.Toolkit;
- import java.io.*;
- import javax.imageio.*;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.ImageIcon;
- import javax.swing.JPanel;
- import javax.swing.Timer;
- public class Character extends JPanel implements ActionListener
- {
- /** Timer used for sprite animation */
- private Timer timer;
- /** The width of each individual sprite on the sprite sheet */
- private int spriteWidth = 32;
- /** The height of each individual sprite on the sprite sheet */
- private int spriteHeight = 48;
- /** The current animation frame we are up to */
- private int iCurrentAnimationImage = 0;
- /** Path for the location of this charactors sprite sheet */
- private String spriteSheetFilePath = "James.png";
- private BufferedImage[] charRight;
- private BufferedImage charStill;
- private boolean bIsMoving;
- /**
- * Constructor for objects of class Character
- */
- public Character()
- {
- loadImage();
- initCharacter();
- }
- private void loadImage()
- {
- charRight = spriteSheetRead( 2, 4 );
- charStill = getSingleSprite( 0, 0 );
- }
- private void initCharacter()
- {
- Color c = new Color( 0,0,0,0 );
- setBackground( c );
- setDoubleBuffered( true );
- timer = new Timer( 200, this ); //Create a new timer for use with the characters sprite animation
- timer.start();
- }
- public void actionPerformed( ActionEvent e )
- {
- iCurrentAnimationImage++;
- if( iCurrentAnimationImage > 3 )
- iCurrentAnimationImage = 0;
- repaint();
- }
- public BufferedImage getSingleSprite( int rowNumber, int colNumber )
- {
- try
- {
- int rows = 4;
- int cols = 4;
- BufferedImage spriteSheet = ImageIO.read( new File( spriteSheetFilePath ) );
- BufferedImage sprite = spriteSheet.getSubimage( colNumber * spriteWidth, rowNumber * spriteHeight, spriteWidth, spriteHeight );
- return sprite;
- }
- catch( IOException e )
- {
- System.out.println( "ERROR!" );
- e.printStackTrace();
- }
- return null; //If we catch an exception, we dont have anything to return but SOMETHING is expected to be returned, so return null
- }
- public BufferedImage[] spriteSheetRead( int rowNumber, int colCount ) //reads in image file and divides it into the sprites
- {
- //32 x 48
- try
- {
- int rows = 4;
- int cols = 4;
- BufferedImage[] sprites = new BufferedImage[ cols ];
- BufferedImage spriteSheet = ImageIO.read( new File( spriteSheetFilePath ) );
- {
- //BufferedImage[] sprites = new BufferedImage[cols];
- for( int j = 0; j < cols; j++ )
- {
- //System.out.println( j );
- sprites[ j ] = spriteSheet.getSubimage( j * spriteWidth, rowNumber * spriteHeight, spriteWidth, spriteHeight );
- }
- return sprites;
- }
- }
- catch( IOException e )
- {
- System.out.println( "ERROR!" );
- e.printStackTrace();
- }
- return null; //If we catch an exception, we dont have anything to return but SOMETHING is expected to be returned, so return null
- }
- @Override
- public void paintComponent( Graphics g )
- {
- //System.out.println( "paint comp" );
- super.paintComponent( g );
- drawCharactor(g);
- }
- private void drawCharactor( Graphics g )
- {
- Graphics2D g2d = (Graphics2D) g;
- if( bIsMoving )
- g2d.drawImage( charRight[ iCurrentAnimationImage ], 0, 0, this);
- else
- g2d.drawImage( charStill, 0, 0, this );
- Toolkit.getDefaultToolkit().sync();
- //g.dispose();
- //repaint();
- }
- public void stopMoving()
- {
- bIsMoving = false;
- }
- public void startMoving()
- {
- bIsMoving = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement