Einzelnen Beitrag anzeigen

fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#2

Re: [DelphiX] DXDraw.surface "clearen"...

  Alt 2. Feb 2006, 14:05
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 ? }
  Mit Zitat antworten Zitat