Einzelnen Beitrag anzeigen

Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#1

Bild wird nicht richtig geladen?

  Alt 30. Nov 2010, 13:17
Guten Nachmittag liebe DP, ich such jetzt schon seit gestern ein Problem in einem Programm von mir, doch ich find es ums verrecken nicht.

Ich versuche, so eine art BoxHead (2D-Shooter) nachzubauen. Dafür habe ich mir jetzt eine Klasse Names TPlayer gemacht, die halt alle Prozeduren rund um den Spieler beinhaltet. Nun soll es möglich sein, in 8 verschiedene Richtungen zu gehen, und somit muss die Klasse TPlayer auch 8 verschiedene Bilder (für jede Richtung eins) kennen. Soweit so gut.

Ich deklariere also ein Array aus 8 Bildern und habe eine Prozedur, die die Bilder von außen aus setzen kann.
Delphi-Quellcode:
type
  TPlayer = class
    ...
    PlayerPics: array [0..7] of TBitMap;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure SetPlayerPic(Bild: TBitMap; Index: Integer);
  end;
  ...

procedure TPlayer.SetPlayerPic(Bild: TBitMap; Index: Integer);
begin
   PlayerPics[Index] := Bild;
end;
Jetzt ruf ich die Prozedur wie folgt auf:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var tempPic: TBitMap;
begin
Spieler := TPlayer.Create(4,4);
tempPic := TBitMap.Create;
tempPic.Transparent := true;
tempPic.LoadFromFile('BitMaps/Player_Up.bmp');
Spieler.SetPlayerPic(tempPic, 1);
tempPic.LoadFromFile('BitMaps/Player_Down.bmp');
Spieler.SetPlayerPic(tempPic, 5);
tempPic.LoadFromFile('BitMaps/Player_Right.bmp');
Spieler.SetPlayerPic(tempPic, 3);
tempPic.LoadFromFile('BitMaps/Player_Left.bmp');
Spieler.SetPlayerPic(tempPic, 7);
end;
Die Jeweiligen BMP's stehen erstmal für die 4 simplen Richtungen (Oben, Unten, Rechts, Links). Doch wenn ich die verschiedenen Bilder jetzt auf mein Formular zeichnen lasse, sind alle 4 Bilder gleich. Wenn ich eines der Bilder nicht lade, ist dieses (was ja auch logisch ist) leer. Aber warum sind alle 4 Bilder gleich? Das ergibt soweit keinen Sinn. Hoffentlich hat einer von euch eine Idee, woran das liegt.

Mfg und danke im Vorraus,
Edlmann
  Mit Zitat antworten Zitat