[Java/Swing] Grootte van een plaatje opvragen

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 15-10-2025
Hey,

ik zit met een probleem, ik heb een klasse voor een spel waarin ik een karakter laadt.
Nu wil ik een collision detection functie maken, die zelf de grootte van het plaatje dat het karakter op dat moment heeft gebruikt, en niet een constante uit een andere class (op deze laatste manier doe ik het nu).

Een karakter heeft nl. verschillende plaatjes, en die verschillen af en toe van grootte... ik wil niet van alle plaatjes de grootte in het constantes bestand zetten, dus leek het me beter om het te automatiseren, maar daar kom ik dus niet uit.

Het begin van de character klasse ziet er ongeveer zo uit:

code:
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
public class PlayerChar extends RoomElement {
    
    // karakter plaatjes
    protected Image playerImageFront;
    protected Image playerImageLeft1;
    protected Image playerImageLeft2;
    protected Image playerImageLeft3;
        //etc.

    public PlayerChar() {
        loadImages();
    }

    public void loadImages()
    {
        // player pics
        playerImageFront = loadImage("images/elffront.gif");
        playerImageLeft1 = loadImage("images/elfleft1.gif");
        playerImageLeft2 = loadImage("images/elfleft2.gif");
        playerImageLeft3 = loadImage("images/elfleft3.gif");
    }

    private Image loadImage(String fileName) 
    {
        return new ImageIcon(ClassLoader.getSystemResource(fileName)).getImage();
    }


In m'n draw functie haal ik het plaatje op van de speler hoe hij er op dat moment uit ziet;

(versimpeld;)

code:
1
2
3
4
5
6
7
    public Image getCharImage()
    {
         // naar links
         if (moveLeft)
         {
                 return playerImageLeft;
        }


Nu wil ik dus een functie maken die de wijdte en breedte van een plaatje zoals ik ze hier gebruik, returnt.
Ik heb al wat geprobeerd met getWidth en getHeight, maar dat wil niet direct lukken.
Iemand enig idee hoe het moet?

  • Baron
  • Registratie: Juli 2000
  • Laatst online: 06-05 14:07
Werkt dit niet ?
w = playerImageFront.getWidth(this);

  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45

SilentStorm

z.o.z

Ik beschouw dit als 'normaal':

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private Image picture = getToolkit().getImage("picture.gif");

MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(picture,  0); //voeg plaatje toe aan mediatracker
try
{       mediaTracker.waitForID(0); //wacht tot plaatje gereed is
}
catch (InterruptedException ie)
{   System.err.println(ie); //of volledige stacktrace, custom fout, etc          
}

int width = picture.getWidth(this);
int height = picture.getHeight(this);

biPicture = new BufferedImage(width ,height, BufferedImage.TYPE_INT_RGB); //buffered maken

Localhost is where the heart is