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