Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Karten fließend bewegen lassen?

  Alt 1. Feb 2010, 18:34
Zitat von IIIMADDINIII:
außerdem fände ich es ganz gut wenn es was gäbe was die bewegung für mich organisiert so dass ich nur noch sagen muss: gehezu(X, Y);
Sowas kann Andorra glaube ich auch nicht. Das wäre aber auch sinnlos, denn das hast du dir in ein paar Minuten selbst geschrieben. Du kennst doch auf Mathe Funktionen, wo ein Wert der Zeit zugeordnet wird - genau so kannst du es in Delphi machen.

Delphi-Quellcode:
// t 0..1
function GetPosition(t: single; StartPoint, EndPoint: TPoint): TPoint;
begin
  Result.X := round(StartPointer.X*(1-t) + EndPoint.X*t);
  Result.Y := round(StartPointer.Y*(1-t) + EndPoint.Y*t);
end;
Das gibt dir für Zeitwerte von 0 bis 1 mit linearer Interpolation die aktuelle Position aus. Dann führst du den Zeichencode mit entsprechenden Koordinaten einfach in regelmäßigen Abständen z.B. mit einem Timer oder einer Schleife aus, zählst die Zeit entsprechend hoch (siehe GetTickCount oder TAdPerformanceCounetr bei Andorra2D) und setzt sie in die Funktion ein - Voilà.

Und flackern tut das Zeichnen nur, wenn du es von der VCL erledigen lässt, weil immer wieder der Hintergrund neu gezeichnet wird. Wenn du selbst mit den Delphi-Funktionen oder GR32 auf ein unsichtbares Bitmap im Speicher zeichnest, und dieses anschließend in einem Rutsch auf das Formular, flackert da nix. Diese Technik nennt man übrigens Doublebuffering.
  Mit Zitat antworten Zitat