Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (542)
Games in Android Showcase (133)
games submitted by our members
Games in WIP (606)
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  
  Loading a sprite sheet  (Read 8090 times)
0 Members and 1 Guest are viewing this topic.
Offline Subscript

Senior Newbie





« Posted 2012-04-19 03:19:32 »

Alright so I'm having a little bit of trouble getting my sprite sheet loader to work.

1  
SSL = new SpriteSheetLoader(32, 32, 5//rows, 1//columns);


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  
package com.akrillix.client;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class SpriteSheetLoader {
   BufferedImage spriteSheet = ImageIO.read(new File("src/spriteSheet.png"));  
   
   int width;
   int height;
   int rows;
   int columns;
   BufferedImage[] sprites = new BufferedImage[rows * columns];
   
   public SpriteSheetLoader(int width, int height, int rows, int columns) throws IOException {
      this.width = width;
      this.height = height;
      this.rows = rows;
      this.columns = columns;
     
      for(int i = 0; i < rows; i++) {
         for(int j = 0; j < columns; j++) {
            sprites[(i * columns) + j] = spriteSheet.getSubimage(i * width, j * height, width, height);
         }
      }
   }
   public void paint(Graphics g) {
      //g.drawImage(sprites[1], 100, 100, null);
   }
}


The error.

1  
2  
3  
4  
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
   at com.akrillix.client.SpriteSheetLoader.<init>(SpriteSheetLoader.java:26)
   at com.akrillix.client.GameWorld.<init>(GameWorld.java:25)
   at com.akrillix.client.Launcher.main(Launcher.java:12)


This is my sprite sheet.
Offline Geemili

Senior Devvie


Medals: 9
Projects: 1
Exp: 2 years


No Games Finished


« Reply #1 - Posted 2012-04-19 03:29:56 »

When do you load the image? A loader would probably be more effective if it did that, and it is probably the reason that it is not working.
Offline Subscript

Senior Newbie





« Reply #2 - Posted 2012-04-19 03:33:10 »

Loading the sprite sheet.
1  
BufferedImage spriteSheet = ImageIO.read(new File("src/spriteSheet.png"));  


What do you mean by a loader?
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline _Al3x

Senior Devvie


Medals: 7


Indie Games FTW!


« Reply #3 - Posted 2012-04-19 03:36:59 »

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  
package com.akrillix.client;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class SpriteSheetLoader {
   BufferedImage spriteSheet = ImageIO.read(new File("src/spriteSheet.png"));  
   
   int width;
   int height;
   int rows;
   int columns;
   BufferedImage[] sprites = new BufferedImage[rows * columns];
   
   public SpriteSheetLoader(int width, int height, int rows, int columns) throws IOException {
      this.width = width;
      this.height = height;
      this.rows = rows;
      this.columns = columns;
     
      for(int i = 0; i < rows; i++) {
         for(int j = 0; j < columns; j++) {
            sprites[(i * columns) + j] = spriteSheet.getSubimage(i * width, j * height, width, height);
         }
      }
   }
   public void paint(Graphics g) {
      //g.drawImage(sprites[1], 100, 100, null);
   }
}


I think you should change:
BufferedImage[] sprites = new BufferedImage[rows * columns];
for:
 BufferedImage[] sprites;

And then in the constructor add:
sprites = new BufferedImage[rows * columns];

Because when you say BufferedImage[] sprites = new BufferedImage[rows * columns];, rows and columns are 0. Then you change their values in the constructor, but sprite is already created with 0 for rown and colums, I think that's the problem Smiley

Offline Subscript

Senior Newbie





« Reply #4 - Posted 2012-04-19 03:40:10 »

Thanks alex. That was it. What a silly 45 minute mistake =/.
Offline _Al3x

Senior Devvie


Medals: 7


Indie Games FTW!


« Reply #5 - Posted 2012-04-19 03:42:36 »

Yey! I'm glad I help Smiley

Offline gimbal

JGO Knight


Medals: 25



« Reply #6 - Posted 2012-04-19 09:17:03 »

Thanks alex. That was it. What a silly 45 minute mistake =/.

If you learn to use a debugger, it is only too easy to spot these kind of things yourself. Just set a breakpoint in the constructor on the line that breaks and investigate the state of the object; it should be pretty obvious when member variables are 0 when they really shouldn't be Smiley
Offline Subscript

Senior Newbie





« Reply #7 - Posted 2012-04-19 18:12:17 »

I'm still doing my best at learning, thanks for all the help.
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.

Elsealabs (17 views)
2014-12-28 10:39:27

CopyableCougar4 (20 views)
2014-12-28 02:10:29

BurntPizza (25 views)
2014-12-27 22:38:51

Mr.CodeIt (15 views)
2014-12-27 04:03:04

TheDudeFromCI (20 views)
2014-12-27 02:14:49

Mr.CodeIt (26 views)
2014-12-23 03:34:11

rwatson462 (58 views)
2014-12-15 09:26:44

Mr.CodeIt (47 views)
2014-12-14 19:50:38

BurntPizza (98 views)
2014-12-09 22:41:13

BurntPizza (116 views)
2014-12-08 04:46:31
How do I start Java Game Development?
by gouessej
2014-12-27 19:41:21

Resources for WIP games
by kpars
2014-12-18 10:26:14

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
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!