Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: [Andorra2D] Mausklick

  Alt 21. Jun 2009, 17:42
Hallo,

TSpriteEngine.GetSpriteAt(x , y) ist auf jeden Fall die richtige Prozedur. "X" und "Y" geben hierbei die Bildschirmkoordinaten an. Wird kein Sprite gefunden wird "nil" zurück gegeben. Allerdings gibt "GetSpriteAt" nur das oberste Sprite zurück. Anwenden kannst du die Funktion zum Beispiel folgendermaßen:

Delphi-Quellcode:
var
  spr: TSprite;
begin
  spr := SpriteEngine.GetSpriteAt(MouseX, MouseY);
  if (spr <> nil) and (spr is TMeineCharakterklasse) then
  begin
    TMeineCharakterklasse(spr).TuEtwas;
  end;
Alternativ gibt es auch die Funktion "GetSpritesAt": Diese gibt dir alles Sprites einer bestimmten Klasse, die an der bestimmten Bildschirmposition (unabhängig von der Z-Sortierung) zurück. Anwenden kannst du die Funktion folgendermaßen:

Delphi-Quellcode:
var
  lst: TSpriteList;
  i: integer;
begin
  lst := TSpriteList.Create;
  SpriteEngine.GetSpritesAt(MouseX, MouseY, TMeineCharakterklasse);
  for i := 0 to lst.Count - 1 do
  begin
    TMeineCharakterklasse(lst[i]).TuEtwas;
  end;
  lst.Free;
end;
Wie schon in den Quelltexten angedeutet, solltest du die Objektorientierte Programmierung (OOP) verwenden: Dabei bildet jeder Objekttyp eine Klasse, die von TImageSprite abgeleitet ist. Wenn du dich damit nicht auskennst solltest du vielleicht vorher ein Tutorial zu OOP lesen: http://www.delphi-treff.de/tutorials...shkurs/page/8/

Hoffe dir geholfen zu haben,
Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat