unit ViewMain;
interface
uses
Animator,
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ExtCtrls;
type
TFloatPoint =
record
x, y : Extended;
end;
TMainView =
class( TForm )
Shape1 : TShape;
Shape2 : TShape;
Shape3 : TShape;
procedure FormCreate( Sender : TObject );
private
FShape1Pos : TFloatPoint;
FShape2Pos : TFloatPoint;
FShape3Pos : TFloatPoint;
FAnimator : TAnimator;
procedure AnimatorStep( Sender : TObject );
procedure AnimatorPaint( Sender : TObject );
public
end;
var
MainView : TMainView;
implementation
{$R *.dfm}
procedure TMainView.AnimatorPaint( Sender : TObject );
begin
// Hier wird das Zeichnen der Oberfläche veranlasst
Shape1.Top := Round( FShape1Pos.y );
Shape1.Left := Round( FShape1Pos.x );
Shape2.Top := Round( FShape2Pos.y );
Shape2.Left := Round( FShape2Pos.x );
Shape3.Top := Round( FShape3Pos.y );
Shape3.Left := Round( FShape3Pos.x );
end;
procedure TMainView.AnimatorStep( Sender : TObject );
begin
// Hier erfolgen NUR die Berechnungen
// Shape1
// Geschwindigkeit 500 Pixel/Sekunde
FShape1Pos.y := FShape1Pos.y - ( 500 / 1000 * FAnimator.Resolution );
// Wenn es nach oben rausrutscht, dann von unten wieder komplett reinkommen lassen
if FShape1Pos.y < 0
then
FShape1Pos.y := FShape1Pos.y + Self.Height - Shape1.Height;
// Shape2
// Geschwindigkeit 200 Pixel/Sekunde
FShape2Pos.y := FShape2Pos.y - ( 200 / 1000 * FAnimator.Resolution );
// Wenn es nach oben rausrutscht, dann von unten wieder komplett reinkommen lassen
if FShape2Pos.y < 0
then
FShape2Pos.y := FShape2Pos.y + Self.Height - Shape2.Height;
// Shape3
// Geschwindigkeit 800 Pixel/Sekunde
FShape3Pos.y := FShape3Pos.y - ( 800 / 1000 * FAnimator.Resolution );
// Wenn es nach oben rausrutscht, dann von unten wieder komplett reinkommen lassen
if FShape3Pos.y < 0
then
FShape3Pos.y := FShape3Pos.y + Self.Height - Shape3.Height;
end;
procedure TMainView.FormCreate( Sender : TObject );
begin
// Positionen der Objekte merken
FShape1Pos.x := Shape1.Left;
FShape1Pos.y := Shape1.Top;
FShape2Pos.x := Shape2.Left;
FShape2Pos.y := Shape2.Top;
FShape3Pos.x := Shape3.Left;
FShape3Pos.y := Shape3.Top;
// Animator initialisieren
FAnimator := TAnimator.Create( Self );
FAnimator.OnStep := AnimatorStep;
FAnimator.OnPaint := AnimatorPaint;
end;
end.