[Java] tekenen in parent class

Pagina: 1
Acties:

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

ik zit met een probleem in Java, en kom er niet uit, wat ik ook probeer...

Ik heb een hoofdklasse die aangeroepen wordt bij executie, en daar maak ik een object aan van de klasse Level.

In die Level klasse heb ik een functie paintLevel, die ik aanroep in de hoofdklasse.
Nu wil ik in die paintLevel functie de achtergrond van het level tekenen, maar dat wil dus niet lukken.

In de hoofdklasse:

code:
1
2
3
4
5
6
7
8
9
10
11
12
public void init()
{
      // init room
      room = new Room1(this, this);

}
public void paint (Graphics g)
{
            
      // room tekenen
      room.paintRoom(g);
 }


In de Room klasse (Room1 overerft van de Room klasse):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// tekent de wereld
public void paintRoom(Image g)
{
    // aantal kolommen berekenen
    roomColumns = Config.appletSizeX / Config.elementWidth;
    roomLines = Config.appletSizeY / Config.elementHeight;
    
    // achtergrond tekenen
    for (int i = 0; i < roomColumns; i++)
    {
        for (int j = 0; j < roomLines; j++)
        {
            g.drawImage (bgImage, xPos, yPos, compRef);
            xPos = xPos + Config.elementHeight;
        }
        yPos = yPos + Config.elementHeight;
    }
}


compRef is de parent, die wordt in de constructor gezet, en wordt dus in de hoofdklasse gezet met 'this'.

Ik krijg de volgende foutmelding op g.drawImage(...):

""Room.java": cannot find symbol; symbol : method drawImage(java.awt.Image,int,int,java.awt.Component), location: class java.awt.Image at line 48, column 19"

Verwijderd

je hebt public void paintRoom(Image g)
en daar stop je een Graphics object in
public void paint (Graphics g)
{

// room tekenen
room.paintRoom(g);
}

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15-05 06:45
Volgens mij krijg je al veel eerder een foutmelding, want je roept paintRoom() aan met een Graphics-object en vervolgens blijkt die methode een Image object als argument te krijgen? Vervolgens krijg je de foutmelding die je noemt omdat de Image-klasse geen drawImage()-methode kent. (Maar Graphics wel.)

  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 11:32

Pinobigbird

doesn't share food!

Java:
1
public void paintRoom(Image g)
moet
Java:
1
public void paintRoom(Graphics g) 
zijn

Image.drawImage(..) bestaat niet,
Graphics.drawImage(...) wel

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 15-10-2025
Ai, vrij domme fout inderdaad... :) Vond het al vreemd, bedankt in ieder geval, nu doet hij het wel goed...

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 15-10-2025
Ik heb nog een andere vraag, ook iets waar ik op dit moment ff niet uit kom...

In de hoofdklasse hou ik in een RoomElement array, het aantal elementen dat er in het level zit bij.

Ik heb een functie addRoomElement;

code:
1
2
3
public void addRoomElement(RoomElement a) {
    roomElements.add(a);
}


die ik in de player klasse wil aanroepen op het moment dat hij bijvoorbeeld een kogel afschiet en er een nieuw element aan het level moet worden tegevoegd, maar dat aanroepen krijg ik niet voor elkaar...

Hoe kan ik die functie aanroepen vanuit de player klasse?

Verwijderd

Door een link te maken met die Roomklasse, dat kan door een Roomobject in de constructor van die klasse mee te geven of in een bepaalde methode

Bijv::

Java:
1
2
3
4
5
6
7
8
9
10
11
12
class Player{

private Room room;

     public Player( Blaa bla, Room room ){
           this.room  = room;
     }

     public void shootBullet(){
            room.doSomething();
     }
}
Pagina: 1