DelphiX i kasowanie obiektów

0

Mam taki mały problem w DelphiX mianowicie tworze obiekty za pomocą takiego kodu

Tlo:= TTlo.Create(EngineGry.Engine);
Tlo.x := (MX div 32)*32;
Tlo.y := (MY div 32)*32;

i taki obiekt tworzy mi sie w wybranym miejscu, ale jeśli mam kilka takich obiektów, to nie wiem, jak je kasować udało mi się znalezienie takij opcji, że kasuje obiekt, ale nie ten który chce, ale ostatni stworzony. A ja chce, że np. prawym klawiszem tworze, lewym kasuje, czy ktoś ma jakieś pomysły, siedze już 3 tyg i nie wiem jak to zrobić :-(

0

albo sprawdzaj pozycje kursora i obiektu - jesli nachodza to ten.
albo trzymaj to w tablicy dynamicznej.

0

no ale zauważyłem problem. jest możliwosc sprawdzania jaki obiekt znajduje sie pod kursorem myszy i użylem tego. jesli tworzeo obiekt, i najade na niego myszą, to rzeczywiscie mi wykrywa jaki to obiekt, ale jesli stworze drugi identyczny obiekt, to po najechaniu na ten pierwszy nie ma zadnej reakcji, wykrywa tylko ten drugi, co to znaczy i jak to rozwiązać

0

jesli uzywasz tej samej zmiennej, to po stworzeniu 2 obiektu, ta zmienna odwoluje sie juz tylko do tej 2.

0

czyli najlepiej użyj tablicy Tlo:array of TTlo; a potem tylko SetLength i jechana :)

0

mam coś takiego

type TTlo = class(TImageSprite)
public
constructor Create(AParent: TSprite); override;
end;

...

Tlo:array of TTlo;

...

Tlo:= TTlo.Create(EngineGry.Engine);* tu wystakuje bląd incompatible types: TTlo and dynamic array*
Tlo.x := (MX div 32)*32;
Tlo.y := (MY div 32)*32;

czyli co sorki ale jestem początkujący i kompletnie nie mam pojęcia. może małe kawalątko kodu co??

0
// soś tam
  SetLength(Tlo,Length(Tlo)+1);
  Tlo[Length(tlo)]:=TTlo.Create(EngineGry.Engine);
  Tlo[Length(tlo)].x:=(MX div 32)*32;
  Tlo[Length(tlo)].y:=(MY div 32)*32;

Powinno śmigać...

0

mam coś takiego

type TTlo = class(TImageSprite)
public
constructor Create(AParent: TSprite); override;
end;

...

Tlo:array of TTlo;

...

Tlo:= TTlo.Create(EngineGry.Engine);* tu wystakuje bląd incompatible types: TTlo and dynamic array*
Tlo.x := (MX div 32)*32;
Tlo.y := (MY div 32)*32;

czyli co sorki ale jestem początkujący i kompletnie nie mam pojęcia. może małe kawalątko kodu co??

0

SetLength(Tlo,Length(Tlo)+1);
Tlo[Length(tlo)]:=TTlo.Create(EngineGry.Engine);
Tlo[Length(tlo)].x:=(MX div 32)*32;
Tlo[Length(tlo)].y:=(MY div 32)*32;

jeśli robie coś takiego, to pierwszy obiekt jest ok, ale przy próbie zrobienia następnego jest błąd programu i z niego wyskakuje

0

No to może spróbuj:

  SetLength(Tlo,Length(Tlo)+1);
  Tlo[high(tlo)]:=TTlo.Create(EngineGry.Engine);
  Tlo[high(tlo)].x:=(MX div 32)*32;
  Tlo[high(tlo)].y:=(MY div 32)*32;

I używaj tagu DELPHI a nie QUOTE i nie pisz 2 razy tego samego

1 użytkowników online, w tym zalogowanych: 0, gości: 1