mhh ich hab jetzt mal was versucht, und zwar rufe ich bei der Kollosion mit der Tür einen Timer auf, welcher DXDraw1.Free macht und danach eigentlich ein neues DXDraw mit Draw2 := TDXDraw.Create(Self) created...
Delphi-Quellcode:
if (Sprite is THaus) then
begin
Form1.DXTimer1.Enabled := false; // damit die Aktuallisierung des DXDraws nicht weitergeht, da sonst EAccess error :x
Form1.DXTimer2.Enabled := false; // s.o.
Form1.DXTimer4.Enabled := true; // timer zum free'n des einen und erstellen des anderen DXDraw's
end;
procedure TForm1.DXTimer4Timer(Sender: TObject; LagCount: Integer);
begin
DXDraw1.Free;
Draw2 := TDXDraw.Create(self);
with Draw2 do
begin
AutoInitialize := true;
Top := 24; Left := 84; Width := 500; Height := 400;
Parent := Form1;
if CanDraw = true then Surface.Fill(0);
end;
Draw2.Flip;
DXTimer4.Enabled := false;
end;
soweit so gut, mein problem liegt jetzt nur darin, dass die CanDraw property des neues DXDraws auf false is und ich nich weiss wieso, also ich kann mir der neuen DXDraw Komponente nix machen
Kann mir ma bitte einer helfen ?
Gruß fabiO
//Edit:
hab gerade noch was neues versucht, hat aber auch nicht funktioniert, weiss denn keiner wieso ?
Delphi-Quellcode:
THausInnen = class(TDXDraw)
public
constructor Create(AParent: TComponent ); override; // Create procedure
end;
{...}
constructor THausInnen.Create(AParent: TComponent);
begin
inherited Create(AParent); // Createn !!
Autoinitialize := true;
Width := 500;
Height := 400;
end;
{...}
procedure TForm1.DXTimer4Timer(Sender: TObject; LagCount: Integer);
begin
DXDraw1.Free; // Ich lösche DXDraw1 von der Form!
with THausInnen.Create(Form1) do // Ich create quasi DXDraw2 auf der Form
begin
top := 24;
parent := Form1;
left := 84;
Surface.Fill(0);
Flip;
end;
DXTimer4.Enabled := false; // Timer wird nur 1 mal ausgeführt
end;
{ die DXDraw-Komponente wird zwar created und dann auch angezeigt, aber ich kann sie nicht füllen, sprich surface.fill funktioniert nicht, da die CanDraw-Property scheinbar auf false steht... wieso ? wo liegt der Fehler ? }