Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#839

Re: Andorra 2D [Ver. 0.45, 24.12.08]

  Alt 29. Dez 2008, 00:22
Hallo igel!

Ich habe mal die „GetSpritesAt“ umgesetzt:
Delphi-Quellcode:
{Returns all sprites at the specified position}
procedure GetSpritesAt(const AX, AY : Integer; ASprites : TSpriteList); overload; virtual;
{Returns all sprites at the specified position and of a specified type}
procedure GetSpritesAt(const AX, AY : Integer; ASprites : TSpriteList; AClass : TSpriteClass); overload; virtual;

procedure TSprite.GetSpritesAt(const AX, AY: Integer; ASprites: TSpriteList;
  AClass: TSpriteClass);
var
  i: Integer;
  Rect : TAdRect;
begin
  if Assigned(ASprites) then
  begin
    ASprites.Clear; // Standard ?
    for i := 0 to Items.Count - 1 do
    begin
      Rect := Items[i].BoundsRect;
      if (AX >= Rect.Left) and (AX <= Rect.Right) and
         (AY >= Rect.Top) and (AY <= Rect.Bottom) and
         (Items[i] is AClass) then
      begin
        ASprites.Add(Items[i]);
      end;
    end;
  end;
end;

procedure TSprite.GetSpritesAt(const AX, AY: Integer; ASprites: TSpriteList);
begin
  GetSpritesAt(AX, AY, ASprites, TSprite);
end;
Ich weiß nicht, ob das leeren der Liste eine Art Standard ist? Ich habe mich übrigens für die Variante als Übergabeparameter entschieden, da damit die Verwaltung der Liste komplett an die "Mutterklasse" abgegeben wurde.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat