Einzelnen Beitrag anzeigen

Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#165

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.20 AL

  Alt 2. Mai 2007, 18:55
Hallo zusammen.

Habe jetzt die DLLs in meinem Projekt auch gegen die neuen der Version 0.2 getauscht und TAdImage überall eingebunden, und seitdem klappt das meiste wieder. Aber beim Scrolling mit der Spriteengine habe ich jetzt Probleme. Überall dort, wo nichts ist (also keine Sprites) dort wird alles verzerrt gezeichnet. Habe eigentlich nichts geändert, also was ist in 0.2 anders?

Mein Rendercode:
Delphi-Quellcode:
procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
  if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
  begin
    AdPerCounter.Calculate;
    Label3.Caption := 'FPS: ' + IntToStr(AdPercounter.FPS) +
      ' - TimeGap: ' + IntToStr(AdPercounter.TimeGap);
    AdDraw.BeginScene;

    AdDraw.ClearSurface(clBlack); //Füllt die Oberfläche mit schwarzer Farbe
    Spriteengine.Dead;

    if sdUp in Scrolling then
      Spriteengine.Y := Spriteengine.Y + Settings.ScrollSpeed *
        (AdPercounter.TimeGap / 1000);
    if sdDown in Scrolling then
      Spriteengine.Y := Spriteengine.Y - Settings.ScrollSpeed *
        (AdPercounter.TimeGap / 1000);
    if sdLeft in Scrolling then
      Spriteengine.X := Spriteengine.X + Settings.ScrollSpeed *
        (AdPercounter.TimeGap / 1000);
    if sdRight in Scrolling then
      Spriteengine.X := Spriteengine.X - Settings.ScrollSpeed *
        (AdPercounter.TimeGap / 1000);

    Spriteengine.X := Spriteengine.X + DiffX * (AdPercounter.TimeGap / 1000);
    Spriteengine.Y := Spriteengine.Y + DiffY * (AdPercounter.TimeGap / 1000);

    Spriteengine.Move(AdPercounter.TimeGap);
    Spriteengine.Draw;

    // MouseParticles.CreateParticles(1, TAdParticle, Container.ScreenToClient(
    // Mouse.CursorPos).X, Container.ScreenToClient(Mouse.CursorPos).Y);
    // MouseParticles.Move(AdPerCounter.TimeGap / 1000);
    // MouseParticles.Draw(0, 0);
    AdDraw.EndScene;

    AdDraw.Flip; //Präsentiert die gezeichneten Dinge auf dem Bildschirm.
  end;
  Done := False;
  // Diese Zeile nicht vergessen, sonst wird der Code nur sporadisch ausgeführt.end;
end;
Und anbei noch 2 Screenshots.

Grüße

Codewalker
Miniaturansicht angehängter Grafiken
kaputt_156.png   ordnung_102.png  
  Mit Zitat antworten Zitat